为什么apache执行我的shell脚本中的所有命令,而不是java'


why does apache executes all commands from my shell script but not java's one?

我试图通过php的exec函数使用shell脚本执行java

<?php
  exec("./test.sh", $output, $exit_code);
  foreach($output as $key => $val){
    echo $key . " ". $val . "<br/>";
  }
  echo "exit code " . $exit_code;
?>

这里我的脚本test.sh是以下

echo "Hello world!";
java -version;
ls -l; 
pwd; 

下面是exec的输出exit_code等于0的结果

0 Hello world!
1 total 18468
2 drwxrwxr-x 4 leonzo leonzo 4096 mars 22 06:45 assets
3 drwxrwxr-x 2 leonzo leonzo 4096 mars 22 06:45 backup
4 drwxrwxr-x 2 leonzo leonzo 4096 mars 22 06:57 com
5 drwxrwxr-x 2 leonzo leonzo 4096 mars 22 06:45 content
6 -rw-rw-r-- 1 leonzo leonzo 1096 mars 22 06:45 index.php
7 drwxrwxr-x 2 leonzo leonzo 4096 mars 22 06:57 mcd
8 -rw-rw-r-- 1 leonzo leonzo 153 mars 23 14:58 test_jar.php
9 -rw-rw-r-- 1 leonzo leonzo 152 mars 23 14:58 test_jar.php~
10 -rwxrwxrwx 1 leonzo leonzo 129 mars 23 15:08 test.sh
11 -rwxrwxrwx 1 leonzo leonzo 119 mars 23 15:02 test.sh~
12 -rw------- 1 leonzo leonzo 18844395 mars 23 14:45 videcom.jar
13 /home/leonzo/Documents/workspace/quifaitquoi
exit code 0

它干净,所有命令从我的shell脚本已经执行,除非java。这种行为的原因是什么?是否需要做一些特殊的事情才能使java正常工作?

我的电脑上确实安装了Java

>java -version
java version "1.7.0_21"
OpenJDK Runtime Environment (IcedTea 2.3.9) (7u21-2.3.9-0ubuntu0.12.04.1)
OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)

对不起,我胡乱猜测:这台机器上安装了java吗?控制台是否具有防止显示错误消息的默认设置?

请给我们更多关于你的设置(环境)。

根据Linux系统,最好将JAVA_HOME变量的路径保存在。bashrc文件中,该文件隐藏在用户的主文件夹中。

设置JAVA_HOME:

JAVA_HOME=/usr/lib/jvm/you-java-version .
 export JAVA_HOME 
PATH=$PATH:$JAVA_HOME/bin