簡體   English   中英

使用ffmpeg轉換文件時PHP內部服務器錯誤500

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM