我升级了我的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环境中测试时,我遇到了问题。
我试图避免对路径进行硬编码。
答案 0 :(得分:1)
在exec语句之前,你可以像这样添加路径变量的路径
putenv('PATH='.getenv('PATH').'path to java here');