2009-07-13 15 views
67

Sto usando PHP 5.3.0 e ho riscontrato qualcosa che potrebbe essere un bug (nel qual caso lo segnalerò) o potrebbe essere me - quindi sto chiedendo di essere sicuro.Modifica upload_max_filesize su PHP

Quando si esegue questo codice:

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

io alla fine con:

2M, 8M 

Questo nonostante la mia impostazione di questi più alto php.ini:

upload_max_filesize = 10M 
post_max_size = 10M 

(che si verificano solo una volta)

Perché t L'errore si verifica dopo aver impostato il valore e impostato su php.ini. Sono incline a pensare che sia un bug. Qualcuno può confermare o indicarmi dove sto andando male?

Aggiornamento: Sembra che il riavvio di Apache ha risolto questo - Ho sempre pensato che non aveva bisogno di essere riavviato se è stata modificata php.ini.

+7

"Ho sempre pensato che non aveva bisogno di essere riavviato se hai cambiato php.ini. " La CLI di PHP preleva immediatamente le modifiche, perché analizza php.ini ad ogni invocazione. mod_php analizza php.ini una volta - all'avvio di apache. –

+0

Ho avuto lo stesso problema di recente. upload_max_filesize non entrerebbe in vigore senza riavviare Apache. Sono su un PHP 5.2.9. Dopo il riavvio, tutto funziona correttamente. – Haluk

+0

Per evitare un riavvio completo di Apache, basta usare "sudo service apache2 reload" – user1048839

risposta

53

Non è possibile utilizzare shorthand notation per impostare i valori di configurazione al di fuori di php.ini. Presumo che stia tornando a 2 MB come predefinito compilato quando confrontato con un valore negativo.

D'altro canto, non credo che upload_max_filesize possa essere impostato utilizzando ini_set(). Lo "official" list afferma che è PHP_INI_PERDIR.

+10

Pensi bene! Non puoi impostare upload_max_filesize usando ini_set() perché upload_max_filesize è un tipo PHP_INI_PERDIR che significa modificabile solo tramite: php.ini, .htaccess o httpd.conf come indicato su: http://php.net/manual/en/configuration. changes.modes.php –

+1

In realtà, è possibile utilizzare la notazione stenografica al di fuori di PHP.ini; puoi usarlo in '.htaccess' e anche con' ini_set'. Forse non in tutte le versioni, però. –

56

Stai utilizzando un provider di hosting condiviso? Potrebbero essere le impostazioni master che annullano qualsiasi cosa tu stia cercando di cambiare. Hai provato ad aggiungerli nel tuo .htaccess?

php_value upload_max_filesize 10M 
php_value post_max_size 10M 
+1

No, questa è la mia istanza Apache/PHP sulla mia macchina (che è Windows se è rilevante). Proverò ad aggiungerli alla configurazione di Apache. Aggiornamento – Ross

+5

: questo influisce su di esso (li cambia a 10) quindi questo metodo funziona. Sono ancora abbastanza confuso sul motivo per cui non funziona in php.ini o usando ini_set. – Ross

+0

+1 questa è sicuramente la strada da percorrere se non riesci ad arrivare a php.ini - grazie mille. –

2

Questo può anche essere controllato con la configurazione di apache. Controllare il httpd.conf e/o .htaccess per qualcosa di simile al seguente:

php_value upload_max_filesize 10M 
-1

se si utilizza ini_set al volo, si troverà qui http://php.net/manual/en/ini.core.php le informazioni che ad es. upload_max_filesize e post_max_size non sono modificabili al volo (PHP_INI_PERDIR).

Solo una modifica di configurazione php.ini, .htaccess o vhost sembra modificare queste variabili.

-1

Se si sta eseguendo in un server locale, come ad esempio wamp o xampp, assicurarsi che stia utilizzando il php.ini che si ritiene sia. Questi server di solito hanno un php.ini predefinito che non si trova nella cartella dei documenti html.

-11

È possibile utilizzare anche nel file php come questo

<?php ini_set('upload_max_filesize', '200M'); ?> 
+2

Questo è palesemente errato: http://stackoverflow.com/a/13442343/1413865 –

6

ho avuto questo lavoro utilizzando un file .user.ini nella stessa directory come il mio script index.php che carica la mia app. Ecco i contenuti:

upload_max_filesize = "20M" 
post_max_size = "25M" 

Questa è la soluzione consigliata per Heroku.

30

Poiché ho appena eseguito questo problema su un host condiviso e non sono riuscito ad aggiungere i valori al mio file .htaccess ho pensato di condividere la mia soluzione.

Ho creato un file ini con i valori al suo interno. Semplice come quello:

Fai un file chiamato ".user.ini" e aggiungere i valori

upload_max_filesize = 150M 
post_max_size = 150M 

Boom, problema risolto.

+0

ha funzionato per me! Grazie! –

+3

"Oltre al file php.ini principale, PHP esegue la scansione dei file INI in ciascuna directory, iniziando dalla directory del file PHP richiesto e procedendo fino alla radice del documento corrente." http://php.net/manual/en/configuration.file.per-user.php – untill

+0

Tu sei l'uomo! Molte grazie ! – Dia

-1

Ho affrontato lo stesso problema, ma ho scoperto che non tutte le impostazioni di configurazione possono essere impostati utilizzando la funzione ini_set(), controllare questo Where a configuration setting may be set