Premature end of script headers

Jonowa

Grünschnabel
Hallo liebe PHP-Gemeinde,

ich habe für einen Kunden eine Homepage mit einem Downloadbereich eingerichtet. Der Kunde selbst kann über eine Uploadseite im Adminbereich Dateien bereitstellen.:)
So weit - so gut. Leider lässt der Webhoster (Strato) nur 8MB als Uploadgröße zu. Ich habe zuerst versucht, über ini_set() den entsprechenden Wert zu ändern; wird aber leider nicht zugelassen. :(
Daraufhin habe ich eine eigene php.ini mit der selben Konfiguration wie auf dem Websace hochgeladen, bis auf die Werte für "max_execution_time" (300), "memory_limit" (32M) und "post_max_size" (16M).
Nun bekomme ich bei größeren Dateien (>8MB) stets die Fehlermeldung "500 - Internal ... blabla ...":confused:
Die entsrechenden error.log Einträge sehen wie folgt aus:
Code:
30.09.2009 23:33:30 xxxxxxx.de [client 188.100.28.1] PHP Warning:  POST Content-Length of 11135253 bytes exceeds the limit of 8388608 bytes in Unknown on line 0, referer: http://www.xxxxxxx.de/admin/upload.php
30.09.2009 23:54:26 xxxxxxx.de [client 188.100.28.1] Premature end of script headers: upload.php, referer: http://www.xxxxxxx.de/admin/upload.php
In der ersten Zeile sieht man die Meldung, dass die Datei größer als erlaubt ist. Daraufhin folgte die Änderung mit der php.ini. Das Ergebnis steht in der zweiten Zeile.:mad:
Ich habe bereits :google: befragt, jedoch nichts gefunden, was meinem Problem entspricht.
Kennt jemand dieses Problem und kann mir weiterhelfen? Vielen Dank im voraus.
 
Hallo Sven,

Die Werte mit der neuen php.ini sehen wie folgt aus: (Ursprungswerte stehen in Klammern)
memory_limit = 32M (32M)
upload_max_filesize = 16M (10M)
post_max_size = 16M (8M)

max_execution_time steht jeweils auf 300, wobei die Fehlermeldung nach etwa 2 Minuten erscheint, es gibt also wohl offensichtlich kein Timeout.
Webspace ist übrignes auch noch genügend vorhanden.
 
Mmmh, so recht weiss ich da dann auch nicht weiter:(

Diese Meldung kommt wirklich nur bei den übergrossen Dateien?

Bist du sicher, dass die Werte auch wirklich so übernommen werden, speziell memory_limit.
Ich meine, ich kann meinem PC auch sagen, er darf jetzt 2TB RAM nutzen, bringt aber nicht viel :-)
 
Moin!

Dein Problem ist, dass der Server bei der Ausführung der Skripte nicht dazu kommt, vollständige HTTP-Header inklusive der obligatorischen Leerzeile zu senden.
Dafür gibt es eine Menge mögliche Ursachen.
Da ich aber davon ausgehe, dass Du die Skripte lokal erfolgreich getestet hast, bedeutet das wohl einen Konfigurationsfehler der eine Meldung verursacht, bevor der Server bzw. PHP dazu kommt, die Standard-Header zu setzen.
Könntest Du die "neue" php.ini hier posten?

Übrigens wird der Fehler ziemlich häufig auch durch invalide Zeichencodierungen in den Skripten und/oder Konfigurationsdateien verursacht.
Ein Problem das sich vor allem in Zusammenhang mit UTF-8 und der Entwicklung auf Windows aber Ausführung auf unixoiden Systemen sehr gern einschleicht.
Deswegen gibt es auch so viele Berichte dass Leute wegen dieser Meldung stundenlang gesucht und probiert haben, aber nichts gefunden -
und sich das Problem wie von allein erledigt hat, ohne dass eine Änderung vorgenommen worden wäre:
Dann ist einfach beim Probieren die betreffende Datei nochmal gespeichert oder 'per FTP/SCP hin- und hergeschmissen worden...

Gruß
Enum

Nachtrag:
Was mich 'grad stutzig macht ist deine Aussage, Strato würde nur 8MB Fileuploads erlauben.
Kann es sein dass das nicht durch den Eintrag in der php.ini geregelt wird sondern durch einen Proxy, eine Firewall oder was-weis-ich?
Das upload_max_filesize nur auf 8MB stand, weil dein Hoster dadurch ebendiesen Fehler vermeiden wollte?
 
Zuletzt bearbeitet:
... Diese Meldung kommt wirklich nur bei den übergrossen Dateien?
Bist du sicher, dass die Werte auch wirklich so übernommen werden, speziell memory_limit ...
Mit Dateien bis 8MB Größe funktioniert alles einwandfrei. Und laut Aussage von phpinfo() sind alle Werte erfolgreich eingetragen.

... Könntest Du die "neue" php.ini hier posten?
Übrigens wird der Fehler ziemlich häufig auch durch invalide Zeichencodierungen in den Skripten und/oder Konfigurationsdateien verursacht.
Ein Problem das sich vor allem in Zusammenhang mit UTF-8 und der Entwicklung auf Windows aber Ausführung auf unixoiden Systemen sehr gern einschleicht.
Deswegen gibt es auch so viele Berichte dass Leute wegen dieser Meldung stundenlang gesucht und probiert haben, aber nichts gefunden -
und sich das Problem wie von allein erledigt hat, ohne dass eine Änderung vorgenommen worden wäre:
Dann ist einfach beim Probieren die betreffende Datei nochmal gespeichert oder 'per FTP/SCP hin- und hergeschmissen worden...
...
Was mich 'grad stutzig macht ist deine Aussage, Strato würde nur 8MB Fileuploads erlauben.
Kann es sein dass das nicht durch den Eintrag in der php.ini geregelt wird sondern durch einen Proxy, eine Firewall oder was-weis-ich?
Das upload_max_filesize nur auf 8MB stand, weil dein Hoster dadurch ebendiesen Fehler vermeiden wollte?
Mit der Zeichenkodierung habe ich auch bereits "herumgespielt". Die ini- und auch die Skriptdateien sind aktuell im ANSI-Format, aber auch eine Konvertierun in UTF-8 brachte nichts.

Ich habe mit dem technischen Kundendienst von Strato gesprochen. Der Mitarbeiter sagte mir, dass man eine eigene php.ini in das entsprechende Verzeichnis stellen soll, und der Interpreter würde dann diese ini-Datei nutzen, was offensichtlich auch klappt, denn laut phpinfo() sehe ich die geänderten Werte auch. Er meint weiterhin, dass die Begrenzung auf 8MB nur ein Vorgabewert sei, die man ändern kann.
 

Anhänge

Zurück