Dans mon site hébergeur, j'ai vu (via phpinfo) que
Cela m'a amené à penser que je devrais être capable de télécharger un fichier d'une taille maximale de 16 Mo. Cependant, lorsque je le fais via une méthode post (comme d'habitude), post_max_size prend le relais et déclare que j'en ai envoyé trop.
Quelle est la méthode permettant d’envoyer un fichier de 16 Mo? GET - PUT - autre?
J'espère que quelqu'un pourra clarifier cela pour moi.
Simon
upload_max_filesize
est la limite d'un fichier unique. post_max_size
est la limite du corps entier de la demande, qui peut inclure plusieurs fichiers.
Donné post_max_size = 20M
et upload_max_filesize = 6M
vous pouvez télécharger jusqu'à 3 fichiers de 6M chacun. Si au lieu post_max_size = 6M
et upload_max_filesize = 20M
, vous ne pouvez télécharger qu'un seul fichier de 6M avant de cliquer sur post_max_size. Cela n'aide pas d'avoir upload_max_size
> post_max_size
.
Ce n'est pas évident de savoir comment reconnaître le dépassement post_max_size
. $_POST
et $_FILES
sera vide, mais $_SERVER['CONTENT_LENGTH']
sera> 0. Si le client n'a simplement chargé aucune variable de publication ni aucun fichier, alors $_SERVER['CONTENT_LENGTH']
sera 0.
Par POST sont effectués (généralement, il existe d'autres méthodes). Recherchez l'attribut method du formulaire contenant le champ de téléchargement de fichier;)
La limite la plus basse de tout paramètre associé remplace un paramètre supérieur:
Voir Gestion des téléchargements de fichiers: Pitfals communs qui explique cela en détail et comment calculer les valeurs.
La méthode normale pour envoyer un fichier téléchargé est POST, donc aussi post_max_size
devrait être de 16 Mo ou plus.
Incidemment, aussi memory_limit
joue un rôle. Il devrait être supérieur à 16 Mo, mais comme la valeur par défaut est 128 Mo, vous ne verrez pas ce problème. Exemple php.ini
configuration:
post_max_size = 16M
upload_max_filesize = 16M
memory_limit = 128M
Modifiez ces valeurs en php.ini
si vous y avez accès, sinon vous pouvez essayer de les changer dans un .htaccess
fichier.
php_value upload_max_filesize 16M
php_value post_max_size 16M
Cela ne fonctionnera que si les paramètres AllowOverride
le permettent. Sinon, vous devez demander à votre hébergeur.
Les paramètres de configuration de votre serveur permettent aux utilisateurs de télécharger des fichiers jusqu’à 16 Mo (car vous avez défini pload_max_filesize = 16 Mo), mais le post_max_size accepte uniquement les données de publication jusqu’à 8 Mo. C'est pourquoi il génère une erreur.
Cité tiré du official PHP site) :
Pour télécharger des fichiers volumineux, la valeur post_max_size doit être supérieure à upload_max_filesize.
memory_limit devrait être plus grand que post_max_size
Vous devez toujours définir votre valeur post_max_size supérieure à la valeur upload_max_filesize.
Par défaut, post_max_size devrait être 4 fois plus grand que upload_max_filesize.
À son tour, memory_limit devrait être 16 fois plus grand que post_max_size
changement dans php.ini max_input_vars 1000