【发布时间】:2011-12-24 08:52:01
【问题描述】:
我通过 exec 命令通过 PHP 调用 gcc。然后 gcc 给出了奇怪的错误,例如“stddef.h cannot be found”。
PHP 在用户名“oracle”下运行。也就是说,当我们通过 PHP 脚本通过“exec”调用“whoami”时,它会给出 oracle 作为用户名。
我们可以在终端上轻松调用 gcc 而不会出错。
我们可以毫无错误地调用“sudo -u oracle gcc source.c”。
所以这对我来说很奇怪。有什么想法???
PS:它在 Fedora 和 Apache 上运行良好;在 Ubuntu 上使用 Apache。
【问题讨论】:
-
检查
dmesg(1)或/var/log/audit/audit.log以获取 SELinux AVC 拒绝/拒绝通知。 -
如果您在 c 文件中使用
#include<stddef.h>,请尝试将-I/usr/include/linux/附加到您的 exec 命令中。如果你使用#include<linux/stddef.h>附加-I/usr/include应该这样做。 -
源码很简单(只是一个printf),只包含stdio.h 请注意使用终端时效果很好。