【发布时间】:2013-07-07 14:12:32
【问题描述】:
我正在使用命令:
shell_exec("java -version");
检测所安装的 Java 版本。已安装 Java。 PHP 脚本在用户“daemon”下运行。从命令行运行此命令:
su daemon -c 'java -version'
输出
java version "1.6.0_27"
OpenJDK Runtime Environment (IcedTea6 1.12.1) (6b27-1.12.1-2ubuntu0.12.04.2)
OpenJDK Client VM (build 20.0-b12, mixed mode, sharing)
我知道使用 shell_exec 可以与 Java 和 PHP 一起使用,因为在代码的其他地方我正在使用它运行 java .jar 文件。
我错过了什么吗?
【问题讨论】:
-
运行 php 脚本的进程很可能确实定义了不同的
PATH。该变量通常在 shell 启动脚本中定义,这可能会有所不同。尝试使用绝对路径解决 java 可执行文件。 -
你可以在命令行输入
which java找到绝对路径。 -
是的,我同意路径可能是罪魁祸首。另外,请考虑其他环境变量,例如 HOME - 我之前使用过 encountered that problem。
-
我认为,根据我在下面的回答,PATH 和其他环境变量不是问题,因为 shell 行为使用了 exec_shell 模拟的反引号。
-
@arkascha - 但在代码的其他地方我正在运行“java file.jar”,它运行 file.jar 就好了。另外,我将命令行中的“which java”作为 root 和代码中的 print 语句进行了比较,它们是相同的:/usr/bin/java