hawkmaster: Upload Fehler bei großen Dateien abfangen (post_max_size)

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

  1. 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

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. 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

      1. 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

        --
        "Love your nation - respect the others."
        1. 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

          1. 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

            --
            "Love your nation - respect the others."
            1. 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