2014-02-12 120 views
0

我升級到了PHP 5.5,我無法在後臺運行服務器。如何在後臺運行PHP的服務器版本

[email protected]:~/site$ php -S localhost:3000 -t public/ & 
[1] 9689 
[email protected]:~/site$ 

[1]+ Stopped     php -S localhost:3000 -t public/ 
[email protected]:~/site$ 

正如您所看到的,服務器立即停止。

+0

如果你在[strace](http://en.wikipedia.org/wiki/Strace)下運行它,會發生什麼? – user555

+0

這是否意味着'strace php -S localhost:3000 -t public /&'? – blockhead

+0

是的,你也可以嘗試在gdb下運行PHP。另見http://derickrethans.nl/what-is-php-doing.html – user555

回答

2

當進程設置爲在後臺運行時(使用&運算符),它不能再寫入終端。生成一個SIGTTOU信號,並且它的默認操作是終止該進程,因爲它不再能夠寫入stdout

通過重定向stdout某處可寫,我們可以確保沒有SIGTTOU信號,並且不會終止進程。

php -S localhost:3000 -t public/ 1>/dev/null & 

1>裝置stdout,而2>裝置stderr,用於錯誤。兩者都可以使用&>重定向到文件或僞設備。

相關問題