0

我正在开发一个通过 PHP 和 Apache 在 Fedora 10 机器上本地运行的应用程序。这取决于在后台运行的进程。

高层希望能够通过浏览器启动/停止/重新启动该过程。我试图通过让 PHP 使用 exec() 和 shell_exec 调用系统来使其工作,但它似乎不起作用。

当我尝试使用“exec('processName')”启动进程时,什么也没有发生。

当我尝试使用“exec('killall processName')”时,SELinux 开始不断弹出该进程被允许的警告(因为我将其置于允许模式),但它实际上并没有杀死该进程!但这似乎在页面完全加载后仍然存在!?!?

我能够以类似的方式调用另一个脚本:“exec('/var/www/cgi-bin/ControlProgram START')”。所以我不太确定这两个调用/命令之间的主要区别是什么。

我还将脚本调用放入 /etc/rc.local 文件中,以使脚本在登录时运行。但是,我是否能够从 PHP 中删除该脚本,因为它是由...系统运行的?

在权限/SELinux 方面,我不是专家,所以不要吝啬血淋淋的细节!提前致谢!

4

3 回答 3

1

如果您对该系统具有管理控制权,您将需要检查 PHP 配置(确保它是 Web 服务器的配置文件)。

Safe_Mode 将阻止 PHP 在特定文件夹之外执行任何操作。在共享主机环境中,这通常意味着您只能执行与您的 home/www 文件夹相关的事情——根据您的笔记似乎就是这种情况。

于 2009-03-12T06:54:26.273 回答
0

我相信我找到了问题所在。我仍然不确定问题是什么,但看起来它与文件/目录权限有关。当我将脚本移动到我的 /var/www/html 目录时,脚本就会运行。我将它们移到 /var/www/cgi-bin 中,它们也在那里工作。所以可能是 apache 无法执行 /var/www 目录之外的脚本,或者至少它不能直接执行。不过感谢您的帮助!

于 2009-03-16T03:35:12.053 回答
0

这听起来像是老派的 unix 权限以及 apache 的运作方式。我确实记得(虽然已经有一段时间了)apache 对它的执行非常小心。仔细检查你的八进制。

要验证它不是 SELinux,您可以禁用它而不是将其置于允许状态。虽然这会导致文件系统重新标记(或应该)。那时,您在 SELinux 上下文中的扩展属性可能会变得异常,并在再次执行时导致 SELinux 问题。

于 2009-06-20T06:13:20.267 回答