J'ai un simple formulaire de téléchargement avec:
enctype="multipart/form-data"/>
et
input type="hidden" name="MAX_FILE_SIZE" value="5900000" />
Et les paramètres suivants, qui sont appliqués (vérifiés via phpini ()) dans php.ini:
upload_max_filesize = 7MB
memory_limit = 64M
post_max_size = 8MB
J'essaie de télécharger un fichier de petite taille - 500 Ko et il passe au travers
J'essaie de télécharger un fichier de 5 Mo (plus petit que les paramètres upload_max_filesize
et post_max_size
) et il échoue avec le code d'erreur 1: qui dit:
UPLOAD_ERR_INI_SIZE Valeur: 1; Le fichier téléchargé dépasse la directive upload_max_filesize dans le fichier php.ini.
Quelqu'un a une idée de ce qui se passe?
Je pense que c'est à cause d'une faute de frappe. Au lieu de
upload_max_filesize = 7MB
il faut lire
upload_max_filesize = 7M
utilisez à nouveau phpinfo()
pour vérifier quelle valeur est réellement appliquée.
Vous devez également définir le post_max_size
dans "php.ini"
upload_max_filesize = 7M
Ici, la valeur est comme 7M
ou 10M
mais pas MB
.
Utilisez à nouveau phpinfo()
pour vérifier quelle valeur a été réellement appliquée.
Utilisez le code ci-dessous pour comprendre quel est le problème. Si la taille du fichier pose problème, il suffit simplement d'imprimer comme dépassant la directive upload_max_filesize
dans php.ini
.
<?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;
}
?>
Par cela, nous pouvons facilement identifier le problème. Nous pouvons également utiliser switch(){ case }
pour imprimer les messages d'erreur ci-dessus.
Voici une grosse erreur que j'ai faite:
Si vous souhaitez télécharger de très gros fichiers, vous devez définir KeepAliveTimeout
plus élevé que la valeur par défaut 5
secondes.
Par exemple:
KeepAliveTimeout 300
Vous pouvez trouver cette propriété dans /etc/Apache2/Apache2.conf
passez à WHM->Service Configuration->PHP Configuration Editor
et mettez à jour la valeur de upload_max_filesize
.