我正在开发一个通过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,我不是大师,所以不要放弃血腥的细节!提前谢谢!
答案 0 :(得分:1)
如果您对此系统拥有管理控制权,则需要检查PHP配置(确保它是Web服务器的配置文件)。
Safe_Mode将阻止PHP执行特定文件夹之外的任何内容。在共享托管环境中,这通常意味着您只能执行与您的home / www文件夹相关的内容 - 这似乎是基于您的笔记的情况。
答案 1 :(得分:0)
我相信我发现了这个问题。我仍然不确定问题是什么,但它看起来与文件/目录权限有关。当我将脚本移动到我的/ var / www / html目录中时,脚本就会运行。我将它们移到/ var / www / cgi-bin中,它们也在那里工作。所以它可能是apache无法执行/ var / www目录之外的脚本的东西,或者至少它不能直接执行。谢谢你的帮助!
答案 2 :(得分:0)
这听起来像是旧学校的unix权限以及apache如何运作。我记得(虽然已经有一段时间了)apache会小心它将执行什么。仔细检查你的八进制。
要验证它不是SELinux,您可以禁用它而不是将其置于许可状态。虽然这会导致文件系统重新标记(或应该)。此时,使用SELinux上下文的扩展属性可能会在执行时再次出现问题并导致SELinux问题。