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?
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.
Sie müssen auch den post_max_size
in "php.ini" einstellen.
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.
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
.
gehen Sie zu WHM->Service Configuration->PHP Configuration Editor
und aktualisieren Sie den Wert von upload_max_filesize
.