我有一些PHP代碼,我需要在服務器的後臺啓動一個ruby腳本。但腳本不想工作。所有的腳本現在都會得到輸入並將其回顯。在PHP中的shell_exec問題
我調用它像這樣:
shell_exec("./fifo_test.r <input.fifo> buffer &");
這將導致PHP無限期掛起。但是當我直接運行它時它工作正常。
[email protected]:/var/www/test# su www-data
$ sh -c ./fifo_test.r <input.fifo> buffer &
$ echo test > input.fifo
$ cat buffer
Got: test
下面是過程信息:
[email protected]:~$ ps -ef | grep fifo
www-data 1076 1 0 00:39 ? 00:00:00 sh -c ./fifo_test.r <input.fifo> buffer &
有什麼想法?謝謝!
編輯:我可以通過手動添加到input.fifo來解凍PHP。然後它工作正常後。但是當PHP啓動它時,它會永遠等待第一個輸入。我不知道如何避免這種情況!
shell_exec和exec,passthru等類似的函數被認爲是危險的,應該在你的php配置中禁用。 – markus
爲什麼我會禁用我想明確使用的東西? – user1222728