php exec()没有刷新路径​​环境变量

时间:2015-08-31 18:06:48

标签: java php variables path environment

我升级了我的java jvm,他们改变了将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环境中测试时,我遇到了问题。

我试图避免对路径进行硬编码。

1 个答案:

答案 0 :(得分:1)

在exec语句之前,你可以像这样添加路径变量的路径

putenv('PATH='.getenv('PATH').'path to java here');