Edgar Ehritt: datei-Upload fehlermeldung

Beitrag lesen

Hallo,

if(/* ... */ ($_FILES['datei']['error'] == UPLOAD_ERR_OK)) {}

php.ini ist auf 8 MB eingestellt.
Wenn ich jetzt eine 40 MB grosse datei hochlade, bekomme ich trotzdem eine positive nachricht, dass die Mail inkl. Anhang geschickt wurde.
das ist aber nicht der Fall..
warum?

leider kann ich Dir nur eine Möglichkeit schreiben, die dafür verantwortlich sein kann. Anders als es im Manual dargelegt ist, bestimmen nicht nur die Direktiven file_uploads, upload_tmp_dir und upload_max_filesize das Hochladen von Dateien; betrachtet man nur die Konfiguration, werden jedoch nur diese zum Bestimmen des Wertes $_FILES[$name]['error'] herangezogen.
 Die Direktive post_max_size bestimmt aber ebenso die Größenbeschränkung angelieferter Dat(ei)en. Es ist nur eben dumm, dass PHP bei einem Überschreiten der Direktive post_max_size stillschweigt; also es wird nichts, gar nichts und immer wieder nichts an Fehlermeldungen ausgegeben, noch ist der Fehler auffangbar. Als Endkonsequenz wird lediglich $_FILES nicht befüllt und $_FILES['datei']['error'] gibt bei einer Standardkonfiguration keine Notiz aus:

Probiere also mal Dein Script mit voller ERROR-Ausgabe:
error_reporting(E_ALL ^ E_STRICT);

Dann sollte folgendes angezeigt werden:
<br />
<b>Notice</b>:  Undefined index:  datei in <b>...</b> on line <b>...</b><br />

Sollte dem so sein, kannst Du mittels array_key_exists('datei',$_FILES) und $_SERVER['CONTENT_LENGTH'] "überprüfen", ob es zu einer Größenüberschreitung kam.

Ohne Blatt vorm Mund: PHP war, ist und wird es auch immer bleiben - ein Haufen Frickelsoftware. ;(

Gruß aus Berlin!
eddi