php无法执行任何外部命令?

时间:2010-12-01 17:11:29

标签: php exec centos permission-denied

我们从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 个答案:

答案 0 :(得分:2)

SELinux阻止您尝试运行它们。我建议您制定规则,允许您运行所需的外部命令子集并将其作为模块加载。

答案 1 :(得分:1)

发现错误。

我试图执行/ usr / bin / tidy例如,usr文件夹有644权限,类似于我书中的lovecraftian恐怖。我可以工作,因为我是根。

我疯狂地想出来并决定检查从root /文件夹到整齐二进制文件的命令的所有路径组件的权限,我发现所有权限设置正确但usr文件夹权限完全搞砸了。< / p>

这是固定的。

答案 2 :(得分:0)

PHP是否在服务器上以Apache身份运行?我以为它像没有人一样......

答案 3 :(得分:0)

https://serverfault.com/questions/207989/php-cant-execute-any-external-command/208001#208001

一般来说,除了你已经将php编译为fastcgi,dso等之外,在centOS上的PHP是无人运行的。