【问题标题】:PHP shell_exec stops workingPHP shell_exec 停止工作
【发布时间】:2017-10-11 11:01:09
【问题描述】:

我遇到了 PHP shell_exec() 的问题。

背景: 我已经使用 shell_exec() 通过 Web 浏览器访问嵌入式 Linux 目标 (即 Raspberry Pi),使用 HTML JavaScript (AJAX) 和 PHP,它们都可以正常工作好吧(因为我知道这方面的安全问题。但不适用于这样做)。目前我正在使用看起来很稳定的 PHP v 5.6.31Apache2 v 2.4.27

问题 长时间使用后,我注意到 shell_exec() 变得无响应?以下示例登录/var/apache2/logs/error_log

...PHP 警告:shell_exec(): 无法执行'/sbin/ifconfig ....

网络服务器仍在积极工作并向浏览器提供页面。我可以通过有效的终端窗口(SSH/串行)执行 ifconfig。 Shell_exec() 功能在 Apache2 服务重新启动之前不会恢复。我已经更新了 Apache2 和 PHP。但这并没有解决问题。

我已经阅读了这方面的内容,并怀疑资源可能是问题所在,即垃圾收集。我尝试在php.ini (session.gc_probability, session.gc_divisor) 中更新以下值,但没有成功。

您对此事的建议/经验将不胜感激:)

提前谢谢你。

【问题讨论】:

  • 执行任何提取数据的方法。我觉得 PHP + Apache 是一种查询嵌入式 linux 目标的缓慢且昂贵(资源匮乏)的方式
  • ...看起来使用 websockets 是实现这个查询系统过程的更好方法。
  • 我撤回了我之前的声明,看起来 websockets 的 exec 问题仍然存在。目前收到PHP: Warning: exec(): Unable to fork [pwd] in /path/to/websocket_server.php

标签: php linux apache shell-exec


【解决方案1】:

您是否尝试更改脚本的权限以允许 apache/PHP 应用程序访问它?

【讨论】:

    【解决方案2】:

    shell_exec() 将等待它执行的脚本完成运行,然后再继续。 所以无论你执行什么都是问题。

    【讨论】:

    • 点在船上,但它不是这个情况。使用其他应用程序时仍然存在问题
    猜你喜欢
    • 1970-01-01
    • 2013-05-27
    • 2014-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-09
    • 2010-12-12
    相关资源
    最近更新 更多