【问题标题】:Unable to call system commands and shell scripts from PHP Fedora 10无法从 PHP Fedora 10 调用系统命令和 shell 脚本
【发布时间】:2009-03-12 05:00:49
【问题描述】:

我正在开发一个通过 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 方面的专家,所以不要吝啬血淋淋的细节!提前致谢!

【问题讨论】:

  • 感谢您迄今为止的回复。今晚我会试试你的例子亚伦。 Nolte,我认为我根本没有修改 php.ini,但我会检查一下。谢谢。

标签: php apache shell cgi fedora10


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2013-04-04
        • 2015-08-31
        • 2013-06-26
        • 1970-01-01
        • 2011-11-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-30
        相关资源
        最近更新 更多