我们在这里从Slackware转移到CentOS,它工作正常,没有通知,php停止执行外部调用,如调用“wc”和“spamc” . 所有这些调用都出现在error_log上:
sh:/ usr / bin / spamc:权限被拒绝
路径是正确的 . 我们正确设置了权限,并且apache应该能够毫无问题地执行文件 . 我们在safe_mode上是 NOT ,我们没有设置base_dir . 它不是SELinux,或者至少sestatus说SELinux被禁用了 .
摘要:
-
PHP无法通过exec()或popen()执行任何操作
-
二进制文件的路径是正确的 .
-
我们未处于安全模式
-
我们没有设置base_dir
-
二进制文件的权限允许apache用户执行它们
-
SELinux已禁用
php.ini中的 -
disable_functions为空
-
我们不知道为什么它不起作用
PHP版本5.3.3和CentOS 5.5
任何人都知道可能发生的事情?提前致谢
4 回答
SELinux阻止了您运行它们的尝试 . 我建议您提出一些规则,允许您运行所需的外部命令子集并将其作为模块加载 .
发现错误 .
我试图执行/ usr / bin / tidy例如,usr文件夹有644权限,类似于我书中的lovecraftian恐怖 . 我可以工作,因为我是根 .
我疯狂地想出来并决定检查命令的所有路径组件的权限从root /文件夹到整洁的二进制文件,我发现所有权限设置正确但usr文件夹权限完全搞砸了 .
这是固定的 .
PHP是否在服务器上以Apache身份运行?我以为它像没人一样运行..
https://serverfault.com/questions/207989/php-cant-execute-any-external-command/208001#208001
一般来说,除了你已经将php编译为fastcgi,dso等之外,在centOS上运行PHP是没有人的...