3

我已经jdk1.7.0_07安装在服务器(linux)上。文件的文件权限~/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_HOME = /usr/java/jdk1.7.0_07并为PATH = /usr/java/jdk1.7.0_07/bin

但,

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

4

3 回答 3

3

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

root@ls:~# /usr/sbin/getenforce 
Enforcing
root@ls:~# /usr/sbin/setenforce Permissive
root@ls:~# /usr/sbin/getenforce 
Permissive

https://superuser.com/questions/455935/php-script-cant-run-bash-script-sh-permission-denied中的更多详细信息

它为我解决了这个问题。

于 2012-12-26T09:00:55.863 回答
2

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

于 2012-10-16T16:23:17.857 回答
1

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

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

关于路径,除非正确设置权限,否则它将不起作用。但是,您在哪里设置了环境 PATH?它在用户个人资料中吗?

于 2012-10-16T16:19:03.860 回答