Fedora 15 PHP exec()不起作用

我不能通过PHP exec()函数运行可执行文件。

操作系统:Fedora 15

PHP safe_modeclosures

PHP代码是:

$exe = "/tmp/defne/./CwCssUGxhjAc"; $result = system( $exe, $retval ); 

chmod 777 on /tmp/defne/tmp/defne/CwCssUGxhjAc

我可以通过命令行运行它:

 sudo -u apache /tmp/defne/CwCssUGxhjAc 

当我通过PHP脚本调用whoami时,PHP给了apache。

我可以通过PHP运行其他可执行文件,如gcc,whoami等。 但是我不能运行一个C / C ++编译的二进制文件。

在Apache错误日志中说:

 sh: /tmp/defne/./CwCssUGxhjAc permission denied 

Selinux已启用。

PS:我不想禁用SELinux。 感谢你的创意,如果你build议禁用selinux。 我同样可以禁用我的电脑的电源插头。

SELinux几乎肯定会阻止Apache执行/tmp 。 你可以通过检查/var/log/audit/audit.log来validation。

简单的解决scheme是将二进制文件移动到可执行文件的标准位置; /usr/local/bin可能是最合适的。

或者,您可以将相应的文件上下文( bin_t )应用于二进制文件:

 sudo semanage fcontext -a -t bin_t /tmp/defne/CwCssUGxhjAc sudo restorecon -v /tmp/defne/CwCssUGxhjAc