2017-10-11 144 views
0

我遇到了PHP shell_exec()的问题。PHP shell_exec停止工作

背景: 我用了shell_exec()通过Web浏览器访问的嵌入式Linux目标(即树莓派),使用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/serial)来执行ifconfig。在Apache2服务重新启动之前,Shell_exec()功能不会被恢复。我更新了Apache2和PHP。但是这并没有解决问题。

我读过这个,怀疑资源可能是问题,即垃圾收集。我试过更新php.ini(session.gc_probability, session.gc_divisor)中的下列值,但没有运气。

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

感谢您提前。

+0

没有任何提取数据的方法。我感觉PHP + Apache是​​一种查询嵌入式Linux目标的慢速且昂贵(资源耗尽)方式。 – joebloggs

+0

...看起来像使用websockets是实现查询系统的这个过程的更好方法。 – joebloggs

+0

我收回了我之前的声明,看起来像execs问题仍然存在与websockets。目前得到'PHP:警告:exec():无法在/ path /到/ websocket_server.php中分支[pwd] – joebloggs

回答

0

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

+0

权限已经设置 - 脚本执行以.. – joebloggs

0

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

+0

点为准,但并非如此这个。使用其他应用程序时问题仍然存在 – joebloggs