php exec () не обновляет переменную окружения Path

1

Я обновил 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, у меня возникает проблема.

Я пытаюсь избежать жесткого кодирования пути.

Теги:
variables
path
environment

1 ответ

1
Лучший ответ

перед оператором exec вы можете добавить путь к переменной пути, например

putenv('PATH='.getenv('PATH').'path to java here');  
  • 0
    Но тогда я просто избегаю жесткого кодирования в одном месте, путем жесткого кодирования в другом месте. Я пытаюсь заставить мой код работать независимо от того, обновлен Jvm или нет. И путь к jvm изменяется во время обновления. Мне бы хотелось, чтобы решение было более элегантным, чем настройка отдельно на отдельных серверах. Было бы хорошо, если бы он просто читал переменную окружения Path. Любые идеи, почему он, кажется, хранит 2 копии переменной Path?
  • 0
    Единственное, о чем я могу думать, это то, что у вас есть более одного php.ini, есть один для версии php, которую вы используете, и тот, который Apache загружает в phpinfo, вы должны увидеть что-то вроде загруженного файла конфигурации, чтобы убедиться, что он загрузка правильного, в который вы внесли изменения
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню