2010-09-24 88 views
1

如果我运行运行了shell_exec( '的Java')在命令行PHP任何回报

which java 

获得正确的输入(/usr/java/.../bin/java)。但是,如果我在一个PHP脚本运行:

<? 
    echo 'java. ' . shell_exec('which java'); 
    echo 'ls. ' . shell_exec('which ls'); 
?> 

没有获取打印出的Java,但我得到了它LS正确的结果......

+8

服务器进程没有它的PATH环境变量设置。 – 2010-09-24 19:33:49

+0

如果我发送硬编码路径,它的工作原理。然后我尝试将它包含在一个带有环境设置的bash文件脚本中,但它也没有工作... – 2010-09-25 16:05:34

回答

2
需要有

两件事:

  • JVM的完整路径(它未在环境中设置)
  • “2> & 1”位于命令行末尾。

因此,例如:

echo shell_exec('/usr/java/jdk6/bin/java -cp myJars.jar MyMainClass arg1 2>&1"); 
+0

谢谢,正是我在过去30分钟内所寻找的。添加2>&1工作。不知道为什么...... – giorgio79 2011-11-05 10:06:46

1

我只是碰到了这个问题为好。我试图确定qrencode实用程序是否安装在(任何)服务器上,如果没有,则记录/警告/正常退出。

考虑到程序应该始终处于标准路径,我在which命令前加上了二进制文件的可能位置,但仍然遵守$PATH可能在系统上的某种定义。我想你可以使用与常见的Java路径这种做法,太:

shell_exec('PATH="$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin" '. 
      'which qrencode'); 
相关问题