通过exec或shell_exec执行java会产生错误
我在服务器(linux)上安装了通过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; 这将导
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,不,这仍然不起作用:(我看到你接受了我的答案。这是否意味着你解决了问题?谢谢你,谢谢你,谢谢你,谢谢你!整个晚上都在努力解决这个问题。再次感谢你。