我正在嘗試使用PHP向外部進程發送SIGHUP信號。目前,我做了以下內容:通過shell_exec通過PHP發送SIGHUP信號
$pid = shell_exec('ps -ef | grep mosquitto | grep -v grep | awk \'{print $2}\'');
shell_exec('kill -s HUP $pid');
當我運行「PHP test.php的」命令行,我已經驗證信號被髮送到正確的過程,符合市場預期。
當我通過訪問http://foo.com/bar/test.php調用腳本時,不發送信號,shell_exec不返回任何內容。
爲了進行測試,我暫時以root權限運行PHP,但遇到同樣的問題,所以我認爲這不是一個權限問題。
有趣的是,了shell_exec返回輸出爲PWD命令和正常運行時間命令給瀏覽器,但不是LS命令。但是從命令行運行時,shell_exec通常會從ls返回輸出。
這些命令還有其他限制嗎?
此外,幾個音符:
- 安全模式是關閉
- 的error_reporting = E_ALL
- 沒有功能是禁用
- 我試圖明確指向二進制文件(防爆/斌/ PS和sh -c PS)
我必須說這個問題被問到,+1 –