Ich habe ein PHP-Skript, das mit einem Cron-Job auf meinem Server aufgerufen wird, um hochgeladene Video-Conversions auszuführen. Es funktioniert gut für einige Videos, aber wenn das Video ein bisschen größer ist (21MB zum Beispiel) bekomme ich eine 500 Internal Server Error
und keine andere Ausgabe.PHP Interner Server Fehler 500 bei der Verwendung von ffmpeg zum Konvertieren von Dateien
Ich denke, dass es möglich ist, dass dieses Problem wegen Timeouts war, also habe ich set_time_limit(9000)
und auch ini_set('max_execution_time', 9000)
hinzugefügt, um dies zu verhindern, aber das löst nichts.
ich ausführen ffmpeg mit:
$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);
jedoch keine Ausgabe ist, und die folgenden Zeilen nicht ausgeführt werden, so dass nach dem shell_exec
das Skript abgebrochen.
am Apache error_log Suche ich diese Zeile sehen:
[Wed Jan 12 00:12:46 2011] [error] [client xx.xxx.xxx.xxx] Premature end of script headers: index.php
Aber es gibt keine weiteren Hinweise. Kann mir jemand helfen?
Für Testzwecke ich dieses PHP-Skript erstellt haben:
<?php
set_time_limit(300);
sleep(120);
echo "SLEEP OUT";
?>
Dieses Skript führt zu einem „500 Internal Server Error“, wenn ich es von meinem Web-Browser aufrufen, so nehme ich an, dass set_time_limit nicht funktioniert. Wenn ich schlafe (30), funktioniert es und es gibt den Text SLEEP OUT zurück. Die Frage ist also, wie kann ich den Timeout-Fehler vermeiden, um ein PHP-Skript auszuführen, das 5 oder 10 Minuten dauert?
HINWEIS: Server ist CentOS mit Apache und PHP als FastCGI-Modul.
Warum rufen Sie dieses Skript von einem Webserver auf? Kannst du nicht einfach CLI verwenden? Es wäre besser für die Videokonvertierung geeignet. – netcoder
@Yehonatan - jetzt sprechen wir nicht mit anderen Benutzern so. Sei nett, sei höflich. – Kev
@Kev: Ja, aber er bekommt 500 HTTP Response Code, was bedeutet, dass er von einem Webserver ausgeführt wurde. – netcoder