2013-07-05 71 views
3

我有一個PHP頁面,我希望它能觸發一個python腳本在後臺運行,並將它的stdout和stderr重定向到一個文件以供稍後閱讀。通過PHP運行python腳本並將stderout stderr重定向到文件

我試過如下:

system('python -u /home/omar/workspace/test/test2.py > /home/omar/workspace/test/testfile &'); 

這工作,因爲PHP的罰款不會阻止和輸出是否正確寫入文件。

但因爲這是唯一的標準輸出,我試圖把>的&代替>:

system('python -u /home/omar/workspace/test/test2.py &> /home/omar/workspace/test/testfile &'); 

出於某種原因,這導致頁面塊和Python腳本的輸出在PHP頁面顯示本身並沒有寫入文件!

這是褻瀆的原因嗎?

回答

2

我解決這樣說:

system('python -u test2.py > testfile 2>&1 & echo $!'); 

最後一點是獲取python實例的pid。

0

我認爲你需要使用的> &代替&>

見下文

「>」 詳細信息標準輸出重定向

「> &」 重定向標準輸出和標準錯誤

「<」重定向標準輸入

「>!」重定向標準輸出;覆蓋文件如果存在的話

「> &!」重定向標準輸出和標準錯誤;覆蓋文件如果存在

「|」標準輸出重定向到另一個命令(管)

「>>」 附加標準輸出

「>> &」 附加標準輸出和標準錯誤

+0

我剛試過>&雖然頁面沒有阻塞,但它也沒有寫入任何文件! –

+0

我已經給出了上面可以使用的其他選項。嘗試這些,首先直接在CMD行,然後如果它的工作,嘗試在PHP中。另外,請使用shell_exec($ cmd)而不是系統($ cmd)。 –

相關問題