Upload Fehler bei großen Dateien abfangen (post_max_size)
hawkmaster
- php
0 wahsaga
Hallo zusammen,
Ich versuche einen Fehler abzufangen, bekomme es aber nicht hin.
Wenn bei einem Dateiupload die hochzuladende Datei größer ist, als das was in der PHP Ini bei "upload_max_filesize" und "post_max_size" steht, bricht mir mein Script ab.
Ich habe den Eindruck dass in dem Moment gar keine $_POST und $_FILE Vars mehr übertragen werden.
Kann das sein?
Ich habe es mal so versucht;
$file_size = $_FILES['file']['size'];
$result_config = mysql_query("SELECT maxupload FROM config");
$myrowconfig = mysql_fetch_array($result_config);
$maxupload = $myrowconfig['maxupload'];
if($file_size > $maxupload){
echo "Upload Error / Upload Fehler!!<br><br>";
echo "FileSize too big <br><br>";
}
Aber in dem Moment des Fehlers steht garnichts in $_FILES['file'] drin.
Dann habe ich ewig was versucht mit der eingebauten PHP Funktion error_get_last()
Denn im Fehlerfahll wird mir etwas geliefert wie;
"POST Content-Length of 9419888 bytes exceeds the limit of 5242880 bytes "
$uploadcheck = error_get_last();
if(!empty($uploadcheck)){
if(strstr($uploadcheck['message'], "POST Content-Length")){
echo "ACHTUNG UPLOAD FEHLER <br>";
}
}
Das würde sogar funktionieren, doch das Problem ist, dass die Meldung dann so lange kommt, bis ein anderer Fehler auftritt der nicht dem Suchmuster entspricht.
Also müsste man die Funktion irgendwie zurücksetzen?
Hat jemand eine Idee wie man den fehler abfangen kann?
Gruss und danke
hawk
hi,
Wenn bei einem Dateiupload die hochzuladende Datei größer ist, als das was in der PHP Ini bei "upload_max_filesize" und "post_max_size" steht, bricht mir mein Script ab.
Damit beschäftigt sich aktuell dieser Thread schon recht ausführlich.
gruß,
wahsaga
Hi wahsaga
danke für den Hinweis,
nun offensichtlich weiss in diesem Thread auch niemand eine Lösung,
Macht es denn Sinn wenn ich mich jetzt noch in diesem alten Thread einklinke und meine Sachen poste?
Gruss
hawk
hi,
Wenn bei einem Dateiupload die hochzuladende Datei größer ist, als das was in der PHP Ini bei "upload_max_filesize" und "post_max_size" steht, bricht mir mein Script ab.
Damit beschäftigt sich aktuell dieser Thread schon recht ausführlich.
gruß,
wahsaga
Moin!
nun offensichtlich weiss in diesem Thread auch niemand eine Lösung,
Dann hast du schlecht gelesen, denn der Thread wurde erfolgreich mit einer Lösung abgeschlossen.
- Sven Rautenberg
Hallo Sven
ich habe mir den Thread nochmals durchgelesen aber trotzdem keinen Hinweis auf eine Lösung gefunden.
Wie gesagt:
Es geht mir nicht darum die Werte von "post_max_size" hochzuschrauben.
Es geht mir darum wie man einen Fehler abfangen kann der während des Uploads passiert, WENN die post_max_size zu klein ist und die Datei zu gross.
Es scheint dass in dem Fall alle Posts unf $_Files nicht übertragen werden.
Gruss
hawk
Moin!
ich habe mir den Thread nochmals durchgelesen aber trotzdem keinen Hinweis auf eine Lösung gefunden.
Wie gesagt:
Es geht mir nicht darum die Werte von "post_max_size" hochzuschrauben.
Dann hast du die Lösung gefunden, aber sie gefällt dir nicht.
Es geht mir darum wie man einen Fehler abfangen kann der während des Uploads passiert, WENN die post_max_size zu klein ist und die Datei zu gross.
Es gibt keine Möglichkeit, das innerhalb eines PHP-Skriptes zu tun, weil das Skript nie gestartet wird, sondern PHP schon von sich aus einen Fehler generiert.
- Sven Rautenberg
Hi Sven
ich beschäftige mich nun schon einige Tage damit und es ist erstaunlich wie oft man was im Internet darüber findet. (und so unterschiedliche und wenige Lösungen :-) )
Es gibt keine Möglichkeit, das innerhalb eines PHP-Skriptes zu tun, weil das Skript nie gestartet wird, sondern PHP schon von sich aus einen Fehler generiert.
Ja, es ist wohl tatsächlich so, dass im Fall einer Datei die größer ist als das was bei "post_max_size" steht, PHP abbricht.
Alle POST und FILE sowie GET VAriablen sind leer.
Es wird noch gestritten ob dies nicht doch ein Bug ist. zumindest gibt es bei PHP BUG zwei Anfragen deswegen.
Ich habe nun eine mögliche Lösung gefunden:
Man kann mit $_SERVER['CONTENT_LENGTH'] das ganze tracken;
if ($_SERVER['CONTENT_LENGTH'] > $mul*(int)$POST_MAX_SIZE && $POST_MAX_SIZE){
echo "UPLOAD PROBLEM <br>";
$error = true;
}
Gruesse
hawk