我使用PHP來運行的exec()上的腳本,看起來像這樣:PHP exec()不工作 - 退出提早?沒有錯誤?
exec("pdftk xx.pdf fill_form xx.fdf output xx.pdf flatten");
最奇怪的事是,當我登錄到SSH和手動把命令 - 它工作正常!它輸出一個224k pdf。但是當我使用exec()命令時,只有腳本的第一個36k出來。 (我檢查 - 良好的文件的第一個36k是相同的壞文件)
沒有heres奇怪的事情 - 這是工作正常與exec(),直到我添加了一些更多的變量fdf文件,使其更長。我認爲這是一個與fdf有關的問題,因爲新數據 - 但爲什麼這個過程會從ssh運行正常?
更新:我也試着運行php -f test.php(它只有一個exec線)。輸出整個文件正確。但即使我去http://mydomain.com/test.php我只得到文件的一部分。
該腳本不會超時,因爲我使它在exec()命令後回顯某些內容,並且它工作正常。
它不可能是一個權限問題(以root SSH登錄),因爲它仍然能夠寫入文件
也 - 當我試圖從高管或中繼獲得退貨或退出值,我得到沒有。返回值始終爲0。
更新:在Apache的錯誤日誌,我越來越
[週五09月17日20點00分57秒2010] [錯誤]未處理的Java異常: [週五20年9月17日:00:57 2010] [error] java.lang.OutOfMemoryError [Fri Sep 17 20:00:57 2010] [error] <>
我將php_ini從32M更改爲64M - 仍然得到它。考慮到這些都是小文件,我不認爲就是這樣。但PHP能夠限制像這樣的子進程的內存?那裏有另一個設置嗎?
幫助!
hehe閱讀已經太晚,你已經解決了這個問題,但我仍然認爲你應該使用redis,因爲很多用戶同時調用腳本,你的內存使用情況將會脫離圖表,並且你的計算機性能會嚴重下降 – Alfred 2010-09-18 01:51:49