it-swarm.com.de

Die $ _FILE-Upload-Datei gibt den Fehler 1 aus, obwohl upload_max_size größer ist als die Dateigröße

Ich habe ein einfaches Formular zum Hochladen mit:

enctype="multipart/form-data"/>

und

input type="hidden" name="MAX_FILE_SIZE" value="5900000" />

Und die folgenden Einstellungen, die in php.ini (durch phpini () überprüft) angewendet werden:

upload_max_filesize = 7MB  
memory_limit = 64M  
post_max_size = 8MB  

Ich versuche, eine Datei hochzuladen, die klein ist - 500 KB und sie geht durch

Ich versuche, eine Datei hochzuladen, die 5 MB groß ist (kleiner als die beiden upload_max_filesize- und post_max_size-Einstellungen) und schlägt mit dem Fehlercode 1 fehl: 

UPLOAD_ERR_INI_SIZE Wert: 1; Die hochgeladene Datei überschreitet die Direktive upload_max_filesize in der php.ini.

Hat jemand eine Ahnung, was los ist?

24
mgpepe

Ich denke, das liegt an einem Tippfehler. Anstatt 

upload_max_filesize = 7MB

es sollte lesen

upload_max_filesize = 7M

verwenden Sie phpinfo() erneut, um zu überprüfen, welcher Wert tatsächlich angewendet wird. 

50
Pekka 웃

Sie müssen auch den post_max_size in "php.ini" einstellen.

7
Lawrence
upload_max_filesize = 7M

Hier ist der Wert wie 7M oder 10M aber nicht MB.

Verwenden Sie erneut phpinfo(), um zu überprüfen, welcher Wert tatsächlich angewendet wurde. 

Verwenden Sie den folgenden Code, um das Problem zu verstehen. Wenn die Dateigröße das Problem ist, wird nur ausgegeben, wenn die upload_max_filesize-Direktive in php.ini überschritten wird.

<?php
$error_types = array(
    1 => 'The uploaded file exceeds the upload_max_filesize directive in php.ini.',
    'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.',
    'The uploaded file was only partially uploaded.',
    'No file was uploaded.',
    6 => 'Missing a temporary folder.',
    'Failed to write file to disk.',
    'A PHP extension stopped the file upload.'
);

// Outside a loop...
if ($_FILES['userfile']['error'] == 0) {
    // here userfile is the name
    // i.e(<input type="file" name="*userfile*" size="30" id="userfile">
    echo "no error ";
} else {
    $error_message = $error_types[$_FILES['userfile']['error']];
    echo $error_message;
}
?>

Dadurch können wir das Problem leicht identifizieren. Wir können auch switch(){ case } verwenden, um die obigen Fehlermeldungen auszudrucken.

3
yasin

Hier ist ein großer Fehler, den ich gemacht habe:

Wenn Sie wirklich große Dateien hochladen möchten, müssen Sie KeepAliveTimeout höher als den Standardwert für 5 Sekunden festlegen.

Zum Beispiel:

KeepAliveTimeout 300

Sie finden diese Eigenschaft in /etc/Apache2/Apache2.conf.

1
pdschubert

gehen Sie zu WHM->Service Configuration->PHP Configuration Editor und aktualisieren Sie den Wert von upload_max_filesize.

0
nisam