[英]PHP Internal Server Error 500 when using ffmpeg to convert files
我有一個PHP腳本,它在我的服務器中通過cron作業調用,以運行上傳的視頻轉換。 它適用於某些視頻,但當視頻稍大(例如21MB)時,我得到500 Internal Server Error
而沒有其他輸出。
我認為這個問題可能是由於超時造成的,所以我添加了set_time_limit(9000)
以及ini_set('max_execution_time', 9000)
來防止這種情況,但這並沒有解決任何問題。
我執行ffmpeg使用:
$cmdOut = shell_exec ('ffmpeg -y -i [....] 2>&1'); // [....] is the rest of the command, it works fine with other videos, so i assume that it works ok.
echo print_r($cmdOut);
但是沒有輸出,並且以下行沒有被執行,因此在shell_exec
之后腳本被中止。
看一下apache error_log我可以看到這一行:
[Wed Jan 12 00:12:46 2011] [error] [client xx.xxx.xxx.xxx] Premature end of script headers: index.php
但沒有其他線索。 誰能幫我?
出於測試目的,我已經創建了這個PHP腳本:
<?php
set_time_limit(300);
sleep(120);
echo "SLEEP OUT";
?>
當我從我的Web瀏覽器調用它時,此腳本會導致“500 Internal Server Error”,因此我認為set_time_limit不起作用。 如果我把睡眠(30)它工作,它返回文本SLEEP OUT。 所以問題是,如何避免超時錯誤執行需要5或10分鍾才能完成的PHP腳本?
注意:服務器是運行apache的CentOS和作為FastCGI模塊的php。
最后我自己解決了這個問題。 我已經開發出一種解決方法來繞過php中的超時限制。 我的解決方案是使用帶有預定cron作業的php-cli命令執行php腳本。 這樣我執行腳本時就沒有時間限制,而且運行良好。
感謝所有人,特別是鳳凰城對這個問題的時間和想法。
你真的需要控制台輸出嗎? 我遇到過類似的問題一次,即使我修改了主要的php.ini本身來延長執行時間限制,但是當通過exec執行ffmpeg時它仍會隨機掉線。 收起來必須> /dev/null &
它來阻止它執行掉落,然后無論扔到什么地方都能正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.