【发布时间】:2017-10-11 11:01:09
【问题描述】:
我遇到了 PHP shell_exec() 的问题。
背景: 我已经使用 shell_exec() 通过 Web 浏览器访问嵌入式 Linux 目标 (即 Raspberry Pi),使用 HTML JavaScript (AJAX) 和 PHP,它们都可以正常工作好吧(因为我知道这方面的安全问题。但不适用于这样做)。目前我正在使用看起来很稳定的 PHP v 5.6.31 和 Apache2 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