OVH Cloud OVH Cloud

ini_get('upload_max_filesize') et MAX_FILE_SIZE

3 réponses
Avatar
Sebastien
Bonjour,

Il y a en fait deux question autour du téléchargement en upload.

Tout d'abord PHP me retourne '2M' comme valeur de
ini_get('upload_max_filesize').

Je comprends ça comme 2 méga, soit 1024 * 1024 * 2 octets (= 2 097 152
octets). Si je me plante ici alors la suite n'a aucun sens. bref.

Je réussis pourtant à envoyer des fichiers (texte) de 2 098 790 octets
(limite absolue).

Est-ce normal ? A quoi correspond vraiment la valeur upload_max_filesize ?



Deuxème question : lorsque je spécifie une valeur MAX_FILE_SIZE dans un
champ du formulaire, PHP ne prend en compte cette valeur que si la
taille du fichier dépasse largement cette valeur (en octets).

Je pensais qu'un fichier d'un octet supérieur à MAX_FILE_SIZE serait
refusé (note : je ne me repose pas sur cette variable pour valider la
taille du fichier mais j'aimerais comprendre...).

Sébastien

3 réponses

Avatar
Olivier Miakinen

Tout d'abord PHP me retourne '2M' comme valeur de
ini_get('upload_max_filesize').

Je comprends ça comme 2 méga, soit 1024 * 1024 * 2 octets (= 2 097 152
octets). Si je me plante ici alors la suite n'a aucun sens. bref.

Je réussis pourtant à envoyer des fichiers (texte) de 2 098 790 octets
(limite absolue).


Tu es sur Windows. Le serveur ne serait-il pas un Unix ? Le fichier ne
comporterait-il pas 1 638 séquences <CR><LF> transformées en simples
<LF> ?


--
Olivier Miakinen
Troll du plus sage chez les conviviaux : le nouveau venu, avec
son clan, s'infiltre dans les groupes de nouvelles. (3 c.)

Avatar
Sebastien
Tu es sur Windows. Le serveur ne serait-il pas un Unix ? Le fichier ne
comporterait-il pas 1 638 séquences <CR><LF> transformées en simples
<LF> ?


Non, j'ai fait attention à ça. Le fichier ne comporte que des "a", sans
espace, sans retour chariot, donc ni lf Unix, ni crlf Windows.

Je ré-affiche aussi la taille du fichier téléchargé et j'obtiens bel et
bien le même nombre d'octets (soit 2 098 790) sur le serveur, qui est
effectivement un Unix (Linux).

Sébastien

Avatar
Xavier Garreau
Bonjour,

Il y a en fait deux question autour du téléchargement en upload.

Tout d'abord PHP me retourne '2M' comme valeur de
ini_get('upload_max_filesize').

Je comprends ça comme 2 méga, soit 1024 * 1024 * 2 octets (= 2 097 152
octets). Si je me plante ici alors la suite n'a aucun sens. bref.

Je réussis pourtant à envoyer des fichiers (texte) de 2 098 790 octets
(limite absolue).

Est-ce normal ? A quoi correspond vraiment la valeur upload_max_filesize ?


Je suppose que php vérifie la taille reçue après chaque buffer transmis. Et
donc, bien que tu fixes la valeur à l'octet près, tu as une erreur sur cette
limite égale (au pire) à la taille des buffers de lecture des données POSTées.

Il n'y a aucune raison que ce soit L'explication mais ça me semble logique.

a+
--
Xavier Garreau
ZazouMiniWebServer: http://www.xgarreau.org/zazouminiwebserver/