95 votes

Modification de la taille maximale des fichiers à télécharger (upload_max_filesize) en PHP

J'utilise PHP 5.3.0 et j'ai rencontré quelque chose qui pourrait être un bogue (auquel cas je le signalerai) ou qui pourrait être moi - donc je demande pour être sûr.

En exécutant ce code :

<?php
ini_set('upload_max_filesize', '10M');
echo ini_get('upload_max_filesize'), ", " , ini_get('post_max_size')

Je me retrouve avec :

2M, 8M

Et ce, malgré le fait que mon php.ini fixe ces valeurs plus élevées :

upload_max_filesize = 10M
post_max_size = 10M

(ne se produisant qu'une fois)

Comme l'erreur se produit après avoir défini la valeur et qu'elle est définie dans le php.ini, je suis enclin à penser qu'il s'agit d'un bogue. Quelqu'un peut-il confirmer ou m'indiquer où je me trompe ?

Mise à jour : On dirait que le redémarrage d'Apache a réglé le problème - j'ai toujours pensé qu'il n'était pas nécessaire de le redémarrer si vous modifiez le php.ini.

10 votes

"J'ai toujours pensé qu'il n'avait pas besoin d'être redémarré si vous modifiez le php.ini." PHP CLI détecte les changements immédiatement, parce qu'il analyse le php.ini à chaque invocation. mod_php analyse le php.ini une fois -- au démarrage d'apache.

0 votes

J'ai eu le même problème récemment. L'option upload_max_filesize ne s'active pas sans redémarrer Apache. Je suis sur un PHP 5.2.9. Après le redémarrage, tout fonctionne bien.

0 votes

Pour éviter un redémarrage complet d'apache, utilisez simplement "sudo service apache2 reload".

78voto

Rob Points 31432

Vous ne pouvez pas utiliser notation sténographique pour définir les valeurs de configuration en dehors de PHP.ini. Je suppose qu'il revient à 2MB comme valeur compilée par défaut lorsqu'il est confronté à une mauvaise valeur.

D'un autre côté, je ne pense pas que upload_max_filesize peut être défini en utilisant ini_set() . Le site "Liste "officielle déclare qu'il est PHP_INI_PERDIR .

18 votes

Vous pensez bien ! Vous ne pouvez pas définir upload_max_filesize en utilisant ini_set() parce que upload_max_filesize est un type PHP_INI_PERDIR qui signifie qu'il ne peut être modifié que via : php.ini, .htaccess ou httpd.conf comme indiqué à l'adresse suivante : php.net/manual/fr/configuration.changes.modes.php

3 votes

En fait, vous pouvez utiliser la notation abrégée en dehors de PHP.ini ; vous pouvez l'utiliser dans le fichier .htaccess et aussi avec ini_set . Peut-être pas dans toutes les versions, cependant.

75voto

karim79 Points 178055

Utilisez-vous un fournisseur d'hébergement mutualisé ? Il se peut que les paramètres principaux prennent le pas sur ce que vous essayez de modifier. Avez-vous essayé d'ajouter ces paramètres dans votre fichier .htaccess ?

php_value upload_max_filesize 10M
php_value post_max_size 10M

1 votes

Non, il s'agit de ma propre instance Apache/PHP sur ma machine (qui est Windows si c'est pertinent). Je vais essayer de les ajouter à la configuration d'Apache.

6 votes

Mise à jour : Ceci a un effet (les change en 10) donc cette méthode fonctionne. Je ne comprends toujours pas pourquoi cela ne fonctionne pas dans le php.ini ou en utilisant ini_set.

0 votes

+1 c'est définitivement la voie à suivre si vous ne pouvez pas accéder à php.ini - merci beaucoup.

7voto

Byron Whitlock Points 29863

Cela peut également être contrôlé avec la configuration d'apache. Vérifiez le httpd.conf et/ou le .htaccess pour quelque chose comme ce qui suit :

php_value upload_max_filesize 10M

0voto

Beachhouse Points 1245

Si vous utilisez un serveur local, tel que wamp ou xampp, assurez-vous qu'il utilise bien le php.ini que vous pensez. Ces serveurs utilisent généralement par défaut un php.ini qui ne se trouve pas dans votre dossier html docs.

-1voto

sassman Points 141

Si vous utilisez ini_set à la volée, vous trouverez ici http://php.net/manual/en/ini.core.php l'information selon laquelle, par exemple, upload_max_filesize et post_max_size ne sont pas modifiables à la volée (PHP_INI_PERDIR).

Seule une modification du php.ini, du .htaccess ou de la configuration du serveur virtuel semble modifier ces variables.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X