Я обновил java java, и они изменили способ хранения местоположения jvm в переменной среды PATH.
Он придерживается "C:\ProgramData\Oracle\Java\javapath;" в начале переменной Path.
Теперь проблема в том, что когда я выполняю exec ("java blah blah blah"), php не может найти новый путь. я получил
"'java' is not recognized as an internal or external command, operable program or batch file."
Он работает только в том случае, если я делаю полный путь:
exec("c:\My\Path\To\Java\java blah blah blah")
Когда я делаю phpInfo (INFO_ENVIRONMENT), он показывает переменную Path перед изменением. Это где-то кэшировано? Я читал в других потоках, что перезапуск сервера, или перезапуск Apache поможет, но он, похоже, не работает. Я попробовал многократные перезагрузки.
var_dump ($ _ SERVER ['PATH']), var_dump (getenv ('PATH')), похоже, показывает новый путь. Почему значение в phpInfo будет отличаться? Есть ли где-то отдельная копия переменной Path?
У меня есть среда разработки, которую я тестировал в Windows Vista, и у меня нет этой проблемы. Когда я тестирую его в среде Windows 2008, у меня возникает проблема.
Я пытаюсь избежать жесткого кодирования пути.
перед оператором exec вы можете добавить путь к переменной пути, например
putenv('PATH='.getenv('PATH').'path to java here');