为什么apache从我的shell脚本执行所有命令但不执行java的命令?

时间:2014-03-23 14:15:24

标签: java php apache shell

我试图通过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)

2 个答案:

答案 0 :(得分:0)

很抱歉我的猜测:这台机器上安装了java吗?控制台是否具有可以防止显示错误消息的默认设置?

请提供有关您的设置(环境)的更多详细信息。

答案 1 :(得分:0)

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

像这样设置JAVA_HOME:

JAVA_HOME=/usr/lib/jvm/you-java-version .

 export JAVA_HOME 

PATH=$PATH:$JAVA_HOME/bin