Modifica la dimensione massima del file di caricamento


513

Ho un sito Web ospitato su un PC a cui non ho accesso. Ho un modulo di caricamento che consente alle persone di caricare file mp3 grandi fino a 30 MB. Il mio script lato server viene eseguito in PHP.

Ogni volta che provo a caricare un file, ricevo un errore che afferma che il file supera la dimensione massima consentita, quindi devo aumentare la dimensione. La mia ricerca sul web ha suggerito di modificare il .htaccessfile a cui non ho accesso, quindi non funzionerà. Altri hanno suggerito che avrei dovuto aggiungere un php.inifile personalizzato alla mia radice che non funzionava. Altri suggerimenti?

Risposte:


877

Devi impostare il valore di upload_max_filesizee post_max_sizenel tuo 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

Dopo aver modificato i file php.ini, è necessario riavviare il server HTTP per utilizzare la nuova configurazione.

Se non riesci a cambiare php.ini, sei sfortunato. Non è possibile modificare questi valori in fase di esecuzione; i caricamenti di file di dimensioni superiori al valore specificato in php.ini non saranno riusciti al momento dell'esecuzione della chiamata a ini_set.

Vedi la descrizione delle direttive principali di php.ini .


4
conosci forse la route predefinita in cui è archiviato il file php.ini?
Yo Momma,

1
Su Linux, di solito è in / etc / php / o qualcosa del genere. Se sei su un server condiviso, sei sfortunato a meno che il tuo provider di hosting non sia abbastanza generoso da fornire un file php.ini per utente.
Johannes Gorset,

4
Se si utilizza WAMP in Windows, è possibile modificarlo facendo clic sull'icona WAMP> PHP -> php.ini. In Debian, il mio file di configurazione è in / etc / php5 / apache2.
meagar

19
Suggerisco di impostare una dimensione maggiore su post_max_size. La dimensione complessiva dei campi pubblicati potrebbe essere superiore alla dimensione del file, quindi se hai il caso limite di qualcuno che sta caricando un file da 40 MB, fallirà a causa del superamento post_max_size.
Acme

2
Nota che memory_limit limita anche la dimensione del caricamento.
Daniel,

151

Puoi cambiarlo tramite un .htaccessfile.

.htaccessi file sono archiviati nella stessa directory dei tuoi .phpfile. Modificano la configurazione per quella cartella e tutte le sottocartelle. Li usi semplicemente creando un .htaccessfile nella directory di tua scelta (o modificalo se presente).

Quanto segue dovrebbe consentire di aumentare il limite di upload (se il provider del server consente le modifiche alla configurazione di PHP tramite .htaccess).

php_value upload_max_filesize 40M
php_value post_max_size 42M

3
Sembra che non funzioni sempre. Sulle mie macchine sviluppatore impostare il valore appropriato in .htaccess ha fatto il lavoro. Sull'hosting condiviso tuttavia questa impostazione non funziona, tuttavia il messaggio di errore indica che la dimensione massima consentita per il caricamento è quel valore impostato in .htaccess. Quindi accade una situazione molto strana.
Eugeniu Torica,

5
Sembra che l'aggiunta di questo nel .htaccess funziona solo se si esegue Apache. Provalo e funziona bene per me.
AngelGris,

Questo non funziona se queste 2 righe in php.ini sono state decommentate :; Nome per i file php.ini (.htaccess) definiti dall'utente. L'impostazione predefinita è ".user.ini" ;user_ini.filename = ".user.ini" ; Per disabilitare questa funzione, imposta questa opzione su un valore vuoto;user_ini.filename =
Alan Deep,

Vale la pena notare che se si utilizza apache CGI o Fast CGI ciò causerà 500 errori. Avvolgilo all'interno di <IfModule mod_php7.c> </IfModule>
Shardj

59

Ho avuto lo stesso problema e ho creato un file .user.ini e l'ho messo nella directory in cui si trovava lo script di upload. Che all'interno di quel file ho impostato questi due valori:

  upload_max_filesize = 40M

  post_max_size = 40M

e ha funzionato alla grande per me!


2
Grande. Funziona anche con fastcgi abilitato. Richiede PHP5.3 o successivo.
Ciantic,

1
Ok, questo ha funzionato su un server condiviso quando nient'altro avrebbe funzionato. Grande scoperta.
Edward Potter,

55

Puoi anche usare la funzione ini_set (solo per la versione PHP precedente alla 5.3):

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

Come ha detto @acme, in php 5.3 e successive queste impostazioni sono direttive PHP_INI_PERDIR, quindi non possono essere impostate usando ini_set. È possibile utilizzare user.ini invece.


38
Nelle recenti versioni di PHP queste impostazioni iniziali sono solo PHP_INI_PERDIR , quindi non è possibile impostarle nel proprio script. Vedi qui per maggiori dettagli.
acme

46

Per individuare il file ini, eseguire prima

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

Quindi apri il file e modifica

upload_max_filesize = 2M
post_max_size = 2M

sostituendo il 2M con la dimensione desiderata, ad esempio 100M.

Ho anche un post sul blog con qualche informazione in più http://www.seanbehan.com/how-to-increase-or-change-the-file-upload-size-in-the-php-ini- File-for-wordpress


5
Mostra il file come /etc/php5/cli/php.inima è il mio file di configurazione /etc/php5/apache2/php.ini. Una specie di fuorviante.
Fredrick Gauss,

Ci sono 2 file php.ini ... e con quel comando in risposta, ti mostra quale stai usando! Quindi è necessario apportare modifiche per rendere effettive!
lewis4u,

40

Ho lo stesso problema in passato .. e l'ho risolto .htaccess file

Quando apporti modifiche alla configrazione di php .htaccess, dovresti inserire le configrazioni nel IfModuletag, a parte l' errore del server interno si verificherà l' .

Questo è un esempio, funziona bene per me:

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

E questo è riferimento a php se vuoi capire di più. http://php.net/manual/en/configuration.changes.php


5
A condizione che tu abbia capacità di override.
AbsoluteƵERØ

3
Per supportare PHP.7 aggiungi lo stesso blocco con: <IfModule mod_php7.c>
Mostafa

16

Ho risolto questo problema creando un file chiamato .user.ini nella directory in cui risiedono gli script di file PHP (ciò significa che qualsiasi script PHP in questa directory ottiene il nuovo limite di dimensione del file)

Il contenuto di .user.ini erano:

upload_max_filesize = 40M
post_max_size = 40M

2
Questa è la soluzione per me Funziona bene. Se stai usando un framework come codeignitor, ".user.ini" deve trovarsi nello stesso posto di index.php
The Dude,

Grazie. Questo funziona per me. Questo è l'ideale per l'hosting condiviso, dove non si ha accesso a php.ini. Vorrei solo aggiungere che è disponibile da PHP 5.3
yacsha,

6

Ho avuto lo stesso problema. Ho provato tre modi che di solito venivano suggeriti:

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

nessuno se ciò ha risolto il mio problema. Sto usando Godaddy e ho trovato una soluzione suggerita che era:

  1. arrivato al Web Hosting , quindi Gestisci
  2. In Software selezionare Seleziona versione PHP
  3. Seleziona Passa alle opzioni PHP che si trovano nell'angolo in alto a destra della tabella nel colore del carattere: blu
  4. Nella parte inferiore, probabilmente avrai upload_max_filesize = 2M
  5. Ora sentiti libero di cambiarlo
  6. Assicurati di fare clic sul pulsante Salva !
  7. Ora vai al tuo pannello wp-admin, seleziona Media quindi Aggiungi

Ecco! Ora hai una dimensione massima del file di caricamento diversa :)


6

molte volte ho notato che il sito con l'hosting condiviso non consente di modificare le impostazioni nei file php.ini. non è nemmeno possibile creare file .htaaccess. in tale situazione si può provare a seguire le cose

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

6

le risposte sono un po 'incomplete, 3 cose che devi fare

in php.ini della tua installazione di php (nota: a seconda che tu lo voglia per CLI, apache o nginx, trova il php.ini giusto da manipolare. Per nginx di solito si trova in /etc/php/7.1/fpmcui 7.1 dipende dalla tua versione. Per apache di solito /etc/php/7.1/apache2)

post_max_size=500M

upload_max_filesize=500M

memory_limit=900M

o impostare altri valori. Riavvia / ricarica apache se hai installato apache o php-fpm per nginx se usi nginx.


5

Bene, vorrei aggiungere qui i miei 2 centesimi.

Sto usando un webhosting condiviso e ho affrontato questo problema molte volte, ho provato a risolverlo da solo ma senza risultati. Finalmente sono riuscito a risolverlo controllando varie fonti web e contattando il mio fornitore di servizi di hosting. Le mie domande erano "Come posso cambiare il valore php memory_limitnel webhosting condiviso?", "Come posso cambiare il valore php upload_max_filesizenel webhosting condiviso?", "Come posso cambiare il valore php max_input_varsnel webhosting condiviso?", "Come posso cambiare il valore php max_execution_timein webhosting condiviso? "," Come posso modificare il valore php max_input_timenel webhosting condiviso? " e molti altri configurando o modificando php.ini o .htaccessfile. Ho provato a cambiarli ma sono sorti problemi. Alla fine ho contattato il mio provider di hosting e si è scoperto che ho impostato il mio php su nativo, lo hanno cambiato in php 5.6,

"Il tuo PHP è stato impostato in modalità" nativa ", il che significa che non puoi sovrascrivere quei valori. Ti ho cambiato in" 5.6 ", quindi dovresti essere bravo ad andare."

Dopo di che ho collegato il mio sito Web tramite ftp Filezilla, inoltre, non dimenticare di fare sia il tuo servizio ftp per mostrare i file nascosti, sia il tuo computer locale per farlo, perché il .htaccessfile era nascosto nel mio laptop locale e nel mio sito Web. Era disponibile nella cartella public_html, l'ho appena scaricato e aggiunto i seguenti codici alla fine del file e poi caricato di nuovo sul server:

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

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

Per il momento tutto funziona correttamente, se qualcuno di voi supera qualche problema, per favore scrivete qui e avvertitemi in modo che io possa cambiare i codici sopra indicati. A proposito, carico anche alcune immagini che mostrano il cambiamento.

Un'altra cosa che ho quasi dimenticato di menzionare l'installazione di ZipArchive sul tuo servizio di web hosting condiviso, sono riuscito a spuntare quel requisito andando semplicemente alle impostazioni php tramite il mio pannello, fare clic sulle estensioni del selettore php e quindi selezionare la sezione zip, tutto qui.

Grazie.

PS: Sono aperto alle buone pratiche e se vedi qualche cattiva pratica qui per favore fammi sapere, proverò a cambiarle. Grazie.


4

Forse questo dovrebbe essere un commento a @ seanb123 e @Fredrick Gauss che commentano il suo commento, ma per me in Drupal 8.1 con PHP 7 il file che dovevo modificare si trovava qui:

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

Probabilmente ho modificato altri quattro file php.ini, incluso quello che il mio sistema ha chiamato "Loaded Configuration File" ( php -i | grep -i "loaded configuration file") e quello trovato nella pagina info.php, ma nessuno di questi ha aiutato. La chiave per scoprire il percorso corretto è stata trovata in un sito dal 2012. Hanno detto che il percorso "/etc/php5/apache2/php.ini"era deprecato anche INDIETRO, ma mi ha dato un indizio su dove trovarlo. Per PHP7 è un po 'diverso rispetto a PHP5 ma il concetto è lo stesso.

Forse questo aiuterà alcuni schmuck altrimenti indifesi come me.

Detto questo, la risposta all'OP nel mio caso sarebbe che qualcuno con privilegi di amministratore sulla scatola avrebbe dovuto farlo.

Il sito che mi ha aiutato: http://www.evilbox.ro/linux/remove-ispconfig-ma maximum-upload- size- of- 2m - for - wordpress/

Questo è anche affrontato qui: Importa limite dimensioni file in PHPMyAdmin

EDIT: il testo completo della mia nota per me:

Per modificare la dimensione massima del caricamento, modifica upload_max_filesize e [se necessario?] Post_max_size in /etc/php/7.0/apache2/php.ini (o nelle versioni precedenti: /etc/php5/apache2/php.ini)

/etc/init.d/apache2 restart

MODIFICA ANCORA: poiché stai importando file di grandi dimensioni potrebbe essere necessario modificare il timeout per elaborarli. Nel mio caso, il file chiamato "config.default.php" è stato trovato /usr/share/phpmyadmin/libraries/config.default.phpcon la variabile che $cfg['ExecTimeLimit'] = 300; ho modificato il mio in 900 per un'importante importazione, ad esempio. Successivamente è necessario riavviare apache


3

Nessuna di quelle soluzioni funziona per me !! (già impostato su 32 M per impostazione predefinita). Il problema è nella maggior parte dei casimax_allowed_packet

Sto lavorando su localhost e utilizzo MAMP.

Ecco le soluzioni;

1. Se non lo hai my.ini

Inserisci

--max_allowed_packet=168435456

Per

...\MAMP\bin\startMysql.sh

2. Se hai my.ini

Sotto

[mysqld]

Inserisci

max_allowed_packet=100M

FATTO!


Aggiunto max_allowed_packet = 128M sia a php.ini che a .user.ini e questo è stato per me!
Molasar,

2

Tre cose che devi controllare.

upload_max_filesize, memory_limitE post_max_sizenel file di configurazione php.ini esattamente.

Tutte e tre queste impostazioni limitano la dimensione massima dei dati che possono essere inviati e gestiti da PHP.

In genere post_max_sizee memory_limitdevono essere più grandi di upload_max_filesize.


Quindi tre variabili in totale è necessario verificare per essere assolutamente sicuri.


2

Con WAMPè tutto abbastanza facile

WAMP Icona> PHP> Impostazioni PHP> upload_max_filesize = nM> n = (2M, 4M, 8M, 16M, 32M, 64M, 128M, 256M, 512M o Scegli (personalizzato)).

I servizi si ricaricano automaticamente.

Ma se davvero non hai accesso al server, potresti voler esplorare scrivendo chunkingun'API.


0

Ho anche avuto questo problema e risolto impostando questa impostazione in /etc/nginx/nginx.conf

client_max_body_size 0;

0, come in illimitato.

Inoltre, se hai un proxy inverso in esecuzione con nginx, anche quel server dovrebbe avere questa impostazione (Questo è ciò che mi ha buttato fuori qui)


0

Se hai modificato il file php.ini corretto, riavviato Apache o Nginx e continua a non funzionare, devi riavviare anche php-fpm :

sudo service php-fpm restart 

0

Dato che cambiare a livello globale è alquanto rischioso, stavo cercando di aumentare il valore di upload massimo per un singolo script big_file_upload.php . Per qualche motivo ini_setnon ha aiutato. Dopo alcune ricerche, ho pensato a questo. Inseriscilo .htaccess(a meno che il nome non sia cambiato tramite AccessFileName)

<If "%{REQUEST_URI} == '/subfolder/big_file_upload.php'" >
php_value upload_max_filesize 200M
php_value post_max_size 200M
</If>
<Else>
php_value upload_max_filesize 1M
php_value post_max_size 1M
</Else>

Ha funzionato per me.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.