Modifica upload_max_filesize su PHP


84

Sto usando PHP 5.3.0 e ho riscontrato qualcosa che potrebbe essere un bug (nel qual caso lo segnalerò) o che potrei essere io, quindi chiedo di esserne sicuro.

Quando si esegue questo codice:

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

Finisco con:

2M, 8M

Questo nonostante il mio php.ini abbia impostato questi valori più alti:

upload_max_filesize = 10M
post_max_size = 10M

(si verifica solo una volta)

Poiché l'errore si verifica dopo aver impostato il valore e dopo averlo impostato in php.ini, sono incline a pensare che sia un bug. Qualcuno può confermarmi o indicarmi dove sto sbagliando?

Aggiornamento : sembra che il riavvio di Apache abbia risolto il problema: ho sempre pensato che non fosse necessario riavviarlo se si cambiava php.ini.


9
"Ho sempre pensato che non fosse necessario riavviarlo se cambiavi php.ini." PHP CLI rileva immediatamente le modifiche, perché analizza php.ini ad ogni invocazione. mod_php analizza php.ini una volta, all'avvio di apache.
Frank Farmer

Recentemente ho avuto lo stesso problema. upload_max_filesize non sarebbe entrato in vigore senza riavviare Apache. Uso PHP 5.2.9. Dopo il riavvio tutto funziona correttamente.
Haluk

Per evitare un riavvio completo di Apache, usa semplicemente "sudo service apache2 reload"
user1048839

Risposte:


69

Non è possibile utilizzare la notazione abbreviata per impostare valori di configurazione al di fuori di PHP.ini. Presumo che stia tornando a 2 MB come impostazione predefinita compilata quando confrontato con un valore negativo.

D'altra parte, non penso che upload_max_filesizepotrebbe essere impostato utilizzando ini_set(). L' elenco "ufficiale" afferma che lo è PHP_INI_PERDIR.


12
Hai ragione! Non puoi impostare upload_max_filesize utilizzando 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: php.net/manual/en/configuration.changes.modes. php
Marco Demaio

2
In realtà, puoi usare la notazione abbreviata al di fuori di PHP.ini; puoi usarlo in .htaccesse anche con ini_set. Forse non in tutte le versioni, però.
Protector one

70

Stai usando un provider di hosting condiviso? Potrebbero essere le impostazioni principali che sovrascrivono tutto ciò che stai cercando di modificare. Hai provato ad aggiungerli al 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 pertinente). Proverò ad aggiungerli alla configurazione di Apache.
Ross

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

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

3
Nota che funziona solo con Apache che esegue PHP come modulo, non come CGI
ChrisV

Direi che questo è il metodo preferito anche con l'accesso al php.inifile. Consente di impostare queste autorizzazioni in base alle necessità piuttosto che come impostazione globale.
Bryant Jackson,

42

Dato che mi sono imbattuto in questo problema su un host condiviso e non sono stato in grado di 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 quella:

Crea un file chiamato ".user.ini" e aggiungi i tuoi valori

upload_max_filesize = 150M
post_max_size = 150M

Boom, problema risolto.


Ha funzionato per me! Grazie!
Justin Putney

4
"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." php.net/manual/en/configuration.file.per-user.php
fino al

1
Funziona alla grande con un sito wordpress! Grazie!
avenged_badger

Ha funzionato benissimo perché non sono in grado di farlo da .htaccess. Grazie uomo!
Strategist

PHP per impostazione predefinita rilegge il file user.ini ogni 5 minuti. Quindi sii paziente se il risultato non appare immediatamente
Andrey Yaremenko

11

Ho ottenuto questo per funzionare utilizzando un file .user.ini nella stessa directory del 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.


6

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

php_value upload_max_filesize 10M

0

Se stai utilizzando un server locale, come wamp o xampp, assicurati che utilizzi il php.ini che pensi che sia. Questi server di solito hanno come impostazione predefinita un php.ini che non si trova nella cartella dei documenti html.


0

Questa soluzione può essere applicata solo se il problema riguarda un'installazione di WordPress!

Se non hai accesso FTP o sei troppo pigro per modificare i file,

È possibile utilizzare il plug- in Aumenta la dimensione massima del file di caricamento per aumentare la dimensione massima del file di caricamento.


0

Per impostazione predefinita, PHP consente il caricamento di file al massimo 2 MB sul server. Ma puoi modificare la dimensione massima del caricamento del file in base alle tue condizioni. Utilizzando il file di configurazione PHP php.ini, puoi aumentare o diminuire la dimensione di caricamento del file in PHP.

Per prima cosa apri il file php.ini nel tuo editor di testo. Cerca nella variabile upload_max_filesize e specifica la dimensione che desideri aumentare.

Cerca la variabile post_max_size e specifica la dimensione che desideri aumentare.

post_max_size = 128M

puoi verificarlo da qui


-1

se usi ini_set al volo, troverai qui http://php.net/manual/en/ini.core.php le informazioni che ad esempio upload_max_filesize e post_max_size non sono modificabili al volo (PHP_INI_PERDIR).

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



-11

Puoi anche usare nel file php come questo

<?php ini_set('upload_max_filesize', '200M'); ?>
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.