通过exec或shell_exec执行java会产生错误

通过exec或shell_exec执行java会产生错误,java,php,linux,exec,java-7,Java,Php,Linux,Exec,Java 7,我在服务器(linux)上安装了jdk1.7.0_07。~/bin文件的文件权限是可执行的(755)。但是当我试图执行时 $output = exec("/usr/java/jdk1.7.0_07/bin/java -version 2>&1"); echo $output; 它给出了权限被拒绝的错误,我已经试过了 $output = exec("java -version 2>&1"); echo $output; 这将导

我在服务器(linux)上安装了
jdk1.7.0_07
~/bin
文件的文件权限是可执行的(755)。但是当我试图执行时

$output = exec("/usr/java/jdk1.7.0_07/bin/java -version 2>&1");
echo $output;
它给出了权限被拒绝的错误,我已经试过了

$output = exec("java -version 2>&1");
echo $output;
这将导致命令未找到错误。在检查我的环境变量时。我成功地添加了
JAVA\u HOME=/usr/JAVA/jdk1.7.0\u 07
PATH=/usr/JAVA/jdk1.7.0\u 07/bin

但是
当我运行上面提到的PHP脚本时,它不断地给我那些权限被拒绝或命令未找到的错误。有个人经历或线索吗?

看来你有两个明显的问题:

如果在提供Java可执行文件的完整路径时,它给出了“权限被拒绝”错误,那么您的权限可能不正确。最常见的原因是,在路径的某个地方,Apache用户(通常是www数据)没有读取权限。例如,如果www数据没有jdk1.7.0_07目录的读取权限,它将无法查看(或打开)它的子目录bin


关于路径,除非正确设置了权限,否则它将不起作用。但是,您在哪里设置了环境路径?它是否在用户配置文件中?

如果您从命令行运行这些命令,您可能会使用自己的用户权限执行它们。但是,当您在web应用程序中通过PHP脚本执行这些相同的命令时,它们将使用Apach用户(通常是www数据)权限执行。这意味着您不能依赖命令行输出来调试权限错误,除非您可以以运行PHP脚本的用户身份登录。

如果您的操作系统是CentOS,它可能来自SELinux

root@ls:~# /usr/sbin/getenforce 
Enforcing
root@ls:~# /usr/sbin/setenforce Permissive
root@ls:~# /usr/sbin/getenforce 
Permissive
更多详情请参阅


它解决了我的问题。

@Tivie,不,这仍然不起作用:(我看到你接受了我的答案。这是否意味着你解决了问题?谢谢你,谢谢你,谢谢你,谢谢你!整个晚上都在努力解决这个问题。再次感谢你。