2010-02-02 7 views
374

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 permettant aux gens de télécharger des fichiers mp3 jusqu'à 30Mo. Mon script côté serveur est fait en PHP.Modifier la taille maximale du fichier upload

Chaque fois que j'essaye de télécharger un fichier, une erreur me fait croire que le fichier dépasse la taille maximale autorisée, donc je dois augmenter la taille. Ma recherche sur le Web a suggéré de changer le fichier .htaccess auquel je n'ai pas accès, donc ça ne marchera pas. D'autres ont suggéré que je devrais ajouter un fichier php.ini personnalisé à ma racine qui n'a pas fonctionné. D'autres suggestions?

Répondre

663

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 fichier php.ini (s), 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 lors de l'exécution. les mises en ligne de fichier supérieures à la valeur spécifiée dans php.ini auront échoué au moment où l'exécution atteint votre appel à ini_set. Voir le Description of core php.ini directives.

+2

savez-vous la route par défaut que le fichier php.ini est stocké? –

+1

Sur Linux, c'est généralement dans/etc/php/ou quelque chose comme ça. Si vous êtes sur un serveur partagé, vous n'avez pas de chance à moins que votre fournisseur d'hébergement soit assez généreux pour fournir un fichier php.ini par utilisateur. –

+4

Si vous utilisez WAMP sous Windows, vous pouvez le modifier en cliquant sur l'icône WAMP> PHP -> php.ini.Dans Debian, mon fichier de configuration est dans/etc/php5/apache2. – meagar

116

Vous pouvez le modifier via un fichier .htaccess. Les fichiers sont stockés dans le même répertoire que les 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 modifiez-le si présent). Ce qui suit devrait vous permettre d'augmenter votre limite de téléchargement (si le fournisseur de serveur autorise les changements de configuration de PHP via .htaccess).

php_value upload_max_filesize 40M 
php_value post_max_size 42M 
+1

Il semble que cela ne fonctionne pas toujours. Sur mes machines dev réglage de la valeur appropriée dans. Htaccess fait le travail. Toutefois, sur l'hébergement partagé, ce paramètre ne fonctionne pas, mais un message d'erreur indique que la taille de téléchargement maximale autorisée est la valeur que j'ai définie dans .htaccess. Donc, une situation très étrange arrive. –

+3

On dirait que l'ajout de ceci dans le fichier .htaccess ne fonctionne que si vous utilisez Apache. Essayez-le et fonctionne bien pour moi. – AngelGris

43

Vous pouvez également utiliser ini_set function (uniquement pour la version PHP ci-dessous 5.3):

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

Comme @acme dit, en php 5.3 ci-dessus et ces paramètres sont des directives PHP_INI_PERDIR afin qu'ils ne peuvent pas être réglés en utilisant ini_set. Vous pouvez utiliser user.ini à la place.

+28

Dans les versions PHP récentes, ces paramètres ini sont uniquement [PHP_INI_PERDIR] (http://www.php.net/manual/en/ini.list.php), vous ne pouvez donc pas les définir dans votre script. Voir [ici] (http://www.php.net/manual/fr/configuration.changes.modes.php) pour plus de détails. – acme

30

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

Lorsque vous faites le changement sur php configration par .htaccess vous devez mettre configrations dans tag IfModule, autre que la erreur interne du serveur apparaîtra.

Voici 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 c'est php referance si vous voulez comprendre plus. http://php.net/manual/en/configuration.changes.php

+5

Pourvu que vous ayez des capacités de remplacement. –

+0

Pour prendre en charge PHP.7 ajouter le même bloc avec:

50

J'ai eu le même problème et j'ai créé un fichier .user.ini et l'ai placé dans le répertoire dans lequel se trouvait le script de téléchargement.À l'intérieur de 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!

+2

Great. Fonctionne avec fastcgi activé aussi. [Nécessite PHP5.3 ou plus récent.] (Http://php.net/manual/en/configuration.file.per-user.php) – Ciantic

+1

Ok, ceci a fonctionné sur un serveur partagé quand rien d'autre ne fonctionnerait. Super trouvaille. –

+0

Cela a également résolu mon problème - merci! –

36

Pour localiser le fichier ini, premier run

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

Ouvrez ensuite le fichier et changer

upload_max_filesize = 2M 
post_max_size = 2M 

remplaçant 2M avec la taille que vous voulez, par exemple 100M.

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

+2

Il affiche le fichier comme '/ etc/php5/cli/php.ini' mais mon fichier de configuration est'/etc/php5/apache2/php.ini'. Une sorte de trompeur. –

+0

Il y a 2 fichiers php.ini ... et avec cette commande en réponse, elle vous montre celle que vous utilisez! Alors là, vous devez faire des changements afin de prendre effet! – lewis4u

1

non de ces solutions fonctionnent 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 en utilisant MAMP.

Voici des solutions;

1. Si vous n'avez pas my.ini

Ajouter

--max_allowed_packet=168435456 

Pour

...\MAMP\bin\startMysql.sh 

2. Si vous avez my.ini

Sous

[mysqld] 

Ajouter

max_allowed_packet=100M 

FAIT!

9

Je résolu ce problème en créant un fichier appelé .user.ini dans le répertoire où les scripts de fichiers PHP résident (cela signifie tout script PHP dans ce répertoire obtient la nouvelle limite de taille de fichier)

Le contenu de .user.ini étaient les suivants:

upload_max_filesize = 40M 
post_max_size = 40M 
+0

C'est la solution pour moi. Fonctionne bien. Si vous utilisez un framework comme codeignitor, ".user.ini" doit être au même endroit que index.php –

+0

Merci. Ça marche pour moi. C'est idéal pour l'hébergement partagé, où vous n'avez pas accès à php.ini. J'ajouterais simplement qu'il est disponible depuis PHP 5.3 – yacsha

3

Eh bien, je voudrais ajouter mes 2 cents ici. J'utilise l'hébergement Web partagé et j'ai abordé ce problème plusieurs fois, j'ai essayé de le résoudre par moi-même mais en vain. Enfin, 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 puis-je changer la valeur php memory_limit dans l'hébergement web partagé?", "Comment puis-je changer la valeur php upload_max_filesize dans l'hébergement web partagé?", "Comment changer la valeur php max_input_vars dans l'hébergement Web partagé?"," Comment puis-je changer php valeur max_execution_time dans l'hébergement Web partagé? "," Comment puis-je changer php valeur max_input_time dans l'hébergement Web partagé? "Et beaucoup plus en configurant ou en changeant php.ini ou .htaccess fichier.J'ai essayé de les changer mais les problèmes . née Enfin, je pris contact avec mon fournisseur d'hébergement, et il se trouve que je mets mon php natif, ils ont changé à PHP 5.6, voici leur réponse:

« Votre PHP a été réglé sur le mode « natif » qui signifie que vous ne pouvez pas remplacer ces valeurs. Je vous ai changé juste « 5.6 » de sorte que vous devriez être bon d'aller . »

Après que je connecté mon site par FTP Filezilla, aussi ne pas oublier de faire à la fois votre service ftp pour montrer caché Le fichier .htaccess était caché dans mon ordinateur portable local et sur mon site Web.Il était disponible dans le dossier public_html, je l'ai juste téléchargé et ajouté les codes suivants à la fin du fichier, puis je l'ai téléchargé au 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

Tout fonctionne correctement pour le moment, si l'un de vous surmonter quelques problèmes s'il vous plaît écrire ici et me mettent en garde afin que je puisse changer les codes ci-dessus. En passant, je télécharge également des photos qui montrent le changement. Encore une chose que j'ai presque oublié de mentionner l'installation de ZipArchive sur votre service d'hébergement partagé, j'ai géré cette exigence en cochant simplement les paramètres php via mon cpanel, en cliquant sur les extensions php, puis en cochant la section zip.

Merci. PS: Je suis ouvert aux bonnes pratiques, et si vous voyez une mauvaise pratique ici s'il vous plaît faites le moi savoir, je vais essayer de les changer. Merci.

0

Trois choses à vérifier.

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

Tous ces trois paramètres limitent la taille maximale des données pouvant être soumises et traitées par PHP.

Généralement post_max_size et memory_limit doivent être supérieurs à upload_max_filesize.


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

1

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

  1. fonctions.php
  2. php.ini
  3. .htaccess

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

  1. obtenu à Web Hosting, puis Gérer
  2. Sous Software sélectionnez Select version PHP
  3. Sélectionnez Version Options PHP trouvé dans le coin supérieur droit de la table en couleur de police: bleu
  4. Sur la partie la plus basse, you'l l probablement upload_max_filesize = 2M
  5. Maintenant, vous pouvez changer
  6. Assurez-vous de cliquer sur le bouton Enregistrer !
  7. Maintenant, allez à votre panneau wp-admin, sélectionnez médias puis Ajouter

Voila! Maintenant, vous avez une taille de fichier de téléchargement max différente :)

0

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

/etc/php/7.0/apache2/php.ini 

Je modded probablement quatre autres fichiers php.ini, y compris celui de mon système appelé le "fichier de configuration Loaded" (php -i | grep -i "fichier de configuration chargé") et celle qui se trouve sur l'info page .php mais aucun d'eux n'a aidé. J'ai trouvé le chemin correct sur un site de 2012 où il a dit que le chemin était déprécié même en arrière. Certes, pour PHP7, c'est un peu différent de ce qu'il disait à l'époque: /etc/php5/apache2/php.ini mais le concept était le même.

Peut-être que cela aidera un schmuck autrement impuissant comme moi. Cela étant dit, la réponse à l'OP 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/

Cette question est traitée également ici: Import file size limit in PHPMyAdmin

-1

plusieurs fois que je l'ai remarqué que l'esprit du site hébergement mutualisé ne permettent pas de modifier les paramètres dans les fichiers php.ini. on ne peut même pas créer de fichier .htaaccess. 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); 
Questions connexes