2017-10-11 116 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