web-dev-qa-db-fra.com

Changer la taille maximale du fichier de téléchargement

J'ai un site Web hébergé sur un PC auquel je n'ai pas accès. J'ai un formulaire de téléchargement qui permet aux gens de télécharger des fichiers MP3 d'une taille pouvant aller jusqu'à 30 Mo. Mon script côté serveur est fait en PHP.

Chaque fois que j'essaie de télécharger un fichier, je reçois une erreur indiquant que le fichier dépasse la taille maximale autorisée. Je dois donc l'augmenter. Ma recherche sur le Web a suggéré de changer le fichier .htaccess auquel je n’ai pas accès, pour que cela ne fonctionne pas. D'autres ont suggéré que je devrais ajouter un fichier personnalisé php.ini à ma racine qui ne fonctionnait pas. D'autres suggestions?

482
Yo Momma

Vous devez définir la valeur de upload_max_filesize et post_max_size dans votre php.ini:

; Maximum allowed size for uploaded files.
upload_max_filesize = 40M

; Must be greater than or equal to upload_max_filesize
post_max_size = 40M

Après avoir modifié le (s) fichier (s) php.ini, vous devez redémarrer votre serveur HTTP pour utiliser la nouvelle configuration.

Si vous ne pouvez pas changer votre php.ini, vous n'avez pas de chance. Vous ne pouvez pas modifier ces valeurs au moment de l'exécution. les envois de fichiers supérieurs à la valeur spécifiée dans php.ini auront échoué au moment où l'exécution atteindra votre appel à ini_set.

Voir le Description des directives du noyau php.ini .

838
meagar

Vous pouvez le changer via un fichier .htaccess.

Les fichiers .htaccess sont stockés dans le même répertoire que vos fichiers .php. Ils modifient la configuration de ce dossier et de tous les sous-dossiers. Vous les utilisez simplement en créant un fichier .htaccess dans le répertoire de votre choix (ou en le modifiant s'il est présent).

Ce qui suit devrait vous permettre d’augmenter votre nombre maximum de téléchargements (si le fournisseur de serveur autorise PHP config de changer de configuration via .htaccess).

php_value upload_max_filesize 40M
php_value post_max_size 42M
137
Andrew Moore

J'ai eu le même problème et j'ai créé un fichier .user.ini et je l'ai mis dans le répertoire dans lequel se trouvait le script de téléchargement. Ensuite, dans ce fichier, je définis ces deux valeurs:

  upload_max_filesize = 40M

  post_max_size = 40M

et cela a très bien fonctionné pour moi!

55
user1641252

Vous pouvez également utiliser fonction ini_set (uniquement pour PHP version inférieure à 5.3):

ini_set('post_max_size', '64M');
ini_set('upload_max_filesize', '64M');

Comme @acme dit, dans PHP 5.3 et supérieur, ces paramètres sont des directives PHP_INI_PERDIR, ils ne peuvent donc pas être définis avec ini_set. Vous pouvez utiliser user.ini à la place.

51
Manjar

Pour localiser le fichier ini, lancez d’abord

php -i | grep -i "loaded configuration file"

Puis ouvrez le fichier et changez

upload_max_filesize = 2M
post_max_size = 2M

en remplaçant le 2M par la taille souhaitée, par exemple 100M.

J'ai aussi un article de blog avec un peu plus d'informations http://www.seanbehan.com/how-to-increase-or-change-the-file-upload-size -in-the-php-ini-file-for-wordpress

44
seanbehan

J'ai le même problème dans le passé .. et je l'ai corrigé via le fichier .htaccess

Lorsque vous apportez des modifications à la configration php via .htaccess, vous devez placer les paramètres de configuration dans la balise IfModule, autrement que l'erreur interne du serveur survenir.

Ceci est un exemple, cela fonctionne très bien pour moi:

<IfModule mod_php5.c>
   php_value upload_max_filesize 40M
   php_value post_max_size 40M
</IfModule>

Et ceci est une référence php si vous voulez en savoir plus. http://php.net/manual/en/configuration.changes.php

38
Eyad Farra

J'ai résolu ce problème en créant un fichier nommé .user.ini dans le répertoire où se trouvent les scripts de fichier PHP (cela signifie que tout script PHP de ce répertoire obtient la nouvelle limite de taille de fichier )

Le contenu de .user.ini était:

upload_max_filesize = 40M
post_max_size = 40M
12
Pearce

J'ai eu le même problème. J'ai essayé trois manières qui étaient habituellement suggérées:

  1. functions.php
  2. php.ini
  3. .htaccess

aucun si ce qui a résolu mon problème. J'utilise GoDaddy et suis tombé sur une solution suggérée qui était:

  1. eu à Hébergement Web, puis Gérer
  2. Sous Logiciel, sélectionnez Sélectionnez PHP version
  3. Sélectionnez Basculer vers PHP Options trouvé dans le coin supérieur droit du tableau dans la couleur de police: blue
  4. Dans la partie inférieure, vous aurez probablement pload_max_filesize = 2M
  5. Maintenant, n'hésitez pas à le changer
  6. Assurez-vous de cliquer sur le bouton Enregistrer!
  7. Maintenant, allez sur votre panneau wp-admin, sélectionnez Media puis Add

Voilà! Maintenant, vous avez une taille de fichier de téléchargement maximale différente:)

5
nrmb

plusieurs fois, j'ai remarqué que l'hébergement d'esprit partagé sur le site wit ne permet pas de modifier les paramètres des fichiers php.ini. on ne peut même pas créer un fichier .htaaccess du tout. dans une telle situation, on peut essayer de suivre les choses

ini_set('upload_max_filesize', '10M');
ini_set('post_max_size', '10M');
ini_set('max_input_time', 300);
ini_set('max_execution_time', 300);
4

les réponses sont un peu incomplètes, 3 choses à faire

dans php.ini de votre installation php (note: en fonction de votre choix pour CLI, Apache ou nginx, trouvez le bon php.ini à manipuler. Pour nginx, il est généralement situé dans /etc/php/7.1/fpm où 7.1 dépend de votre version. Pour Apache généralement /etc/php/7.1/Apache2)

post_max_size=500M

upload_max_filesize=500M

memory_limit=900M

ou définir d'autres valeurs. Redémarrez/rechargez Apache si vous avez Apache installé ou php-fpm pour nginx si vous utilisez nginx.

4
Toskan

Eh bien, je voudrais ajouter mes 2 cents ici.

J'utilise l'hébergement Web partagé et je me suis souvent attaqué à ce problème, en essayant de le résoudre moi-même, mais en vain. Finalement, j'ai réussi à le résoudre en vérifiant diverses sources Web et en contactant mon fournisseur de services d'hébergement. Mes questions étaient "Comment modifier la valeur php memory_limit dans l'hébergement Web partagé?", "Comment modifier la valeur php upload_max_filesize dans l'hébergement Web partagé?", "Comment modifier la valeur php max_input_vars dans l'hébergement Web partagé? "," Comment modifier la valeur php max_execution_time dans l'hébergement Web partagé? "," Comment modifier la valeur php max_input_time dans l'hébergement Web partagé? " et beaucoup d'autres en configurant ou en modifiant le fichier php.ini ou .htaccess. J'ai essayé de les changer mais des problèmes ont surgi. Enfin, j'ai contacté mon fournisseur d'hébergement, et il s'avère que je mets mon php en natif, ils l'ont changé en php 5.6, voici leur réponse:

"Votre PHP a été défini sur le mode" natif ", ce qui signifie que vous ne pouvez pas remplacer ces valeurs. Je vous ai remplacé par" 5.6 ", vous devriez donc pouvoir vous y rendre."

Après avoir connecté mon site Web via ftp Filezilla, n'oubliez pas de configurer votre service ftp pour afficher les fichiers cachés et votre ordinateur local, car le fichier .htaccess était caché dans mon ordinateur portable local et dans mon ordinateur. site Internet. Il était disponible dans le dossier public_html. Je viens de le télécharger et d’ajouter les codes suivants à la fin du fichier, puis de le télécharger à nouveau sur le serveur:

php_value memory_limit 256M
php_value post_max_size 256M
php_value upload_max_filesize 64M
php_value max_input_vars 1800
php_value max_execution_time 300
php_value max_input_time 300

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

Pour le moment, tout fonctionne correctement. Si vous rencontrez un problème, merci d'écrire ici et de me prévenir que je puisse modifier les codes indiqués ci-dessus. En passant, je télécharge également des images qui montrent le changement.

Une dernière chose que j'ai presque oublié de mentionner l’installation de ZipArchive sur votre service d’hébergement Web partagé, j’ai réussi à cocher cette exigence en allant simplement dans les paramètres php via mon cpanel, en cliquant sur les extensions du sélecteur php, puis en cochant la section Zip, c’est tout.

Merci.

PS: Je suis ouvert aux bonnes pratiques, et si vous voyez des mauvaises pratiques ici, faites-le-moi savoir, je vais essayer de les changer. Merci.

4
garakchy

Aucune de ces solutions ne fonctionne pour moi! (déjà réglé à 32M par défaut). Le problème est dans la plupart des cas max_allowed_packet

Je travaille sur localhost et j'utilise MAMP.

Voici des solutions;

1. Si vous n'avez pas my.ini

Ajouter

--max_allowed_packet=168435456

To

...\MAMP\bin\startMysql.sh

2. Si vous avez my.ini

Sous

[mysqld]

Ajouter

max_allowed_packet=100M

FAIT!

3
ErcanE

Cela devrait peut-être être un commentaire pour @ seanb123 et @ Fredrick Gauss commentant son commentaire, mais pour moi, dans Drupal 8.1 avec PHP 7, le fichier que je devais modifier se trouvait ici:

/etc/php/7.0/Apache2/php.ini

J'ai probablement modifié quatre autres fichiers php.ini, dont celui de mon système appelé "Fichier de configuration chargé" (php -i | grep -i "loaded configuration file") et celui qui se trouve sur la page info.php, mais aucun d'entre eux ne m'a aidé. La clé pour découvrir le bon chemin a été trouvée sur un site à partir de 2012. Ils ont dit que le chemin "/etc/php5/Apache2/php.ini" était déprécié même RETOUR, mais il me donnait un indice pour le trouver. Pour PHP7, c'est un peu différent de PHP5 mais le concept est le même.

Peut-être que cela aidera certains imbéciles autrement impuissants comme moi.

Cela étant dit, la réponse au PO dans mon cas serait que quelqu'un avec des privilèges d'administrateur sur la boîte devrait le faire.

Le site qui m'a aidé: http://www.evilbox.ro/linux/remove-ispconfig-maximum-upload-size-of-2m-for-wordpress/

Ceci est également abordé ici: limite de taille de fichier d'importation dans PHPMyAdmin

EDIT: le texte intégral de ma note à moi-même:

Pour modifier la taille de téléchargement maximale, éditez upload_max_filesize et [si nécessaire?] Post_max_size dans /etc/php/7.0/Apache2/php.ini (ou dans les versions antérieures: /etc/php5/Apache2/php.ini)

/etc/init.d/Apache2 restart

EDIT AGAIN: puisque vous importez des fichiers volumineux, vous devrez peut-être modifier le délai d'attente pour leur traitement. Dans mon cas, le fichier nommé "config.default.php" a été trouvé dans /usr/share/phpmyadmin/libraries/config.default.php avec la variable $cfg['ExecTimeLimit'] = 300; J'ai modifié le mien en 900 pour une importation énorme, par exemple. Ensuite, vous devez redémarrer Apache

3
seizethecarp

Trois choses que vous devez vérifier.

upload_max_filesize, memory_limit et post_max_size dans le fichier de configuration php.ini exactement.

Ces trois paramètres limitent la taille maximale des données pouvant être soumises et gérées par PHP.

En règle générale, post_max_size et memory_limit doivent être supérieurs à upload_max_filesize.


Donc, trois variables total vous devez vérifier pour être absolument sûr.

2
prosti

Avec WAMP c'est très facile

WAMP Icône> PHP> PHP Paramètres> upload_max_filesize = nM> n = (2 Mo, 4 M, 8 M, 16 M, 32 M, 64 M, 128 M, 256 M, 512 M, ou Choisissez (personnalisé)).

Service (s) recharger automatiquement.

Mais si vous avez vraiment non accès au serveur, vous pouvez explorer la possibilité d’écrire une API chunking.

1
SimonB