Cosa sta limitando le mie risorse PHP?
Domanda
Ho problemi a estrarre più memoria da PHP.
Questo è il messaggio di errore:
Fatal error: Allowed memory size of 20971520 bytes exhausted (tried to allocate 82 bytes) in ...
Ancora:
Ho impostato memory_limit nel file php.ini su 32M:
memory_limit = 32M;
Ho anche provato a sovrascriverlo manualmente nello script effettivo:
ini_set('memory_limit', '32M');
E - ecco dove mi sono perso - ho confermato tramite phpinfo () che questo file php.ini è l'effettivo file ini utilizzato e che memory_limit sembra essere impostato correttamente. La riga su memory_limit dà questo:
memory_limit 32M 32M
Quindi sembrerebbe che tutto sia configurato correttamente, ma sto ricevendo solo 20971520 byte (~ 20M).
Dove altro dovrei cercare di capire dove viene imposta questa limitazione?
EDIT: sto eseguendo php con nginx / fastcgi, su Ubuntu 9.04 in un VPS. I processi php-cgi sembrano essere un po 'affamati di risorse (RES = 25m, VIRT = 187m), ma ho 10m di memoria fisica libera e 500m di spazio di swap.
Soluzione 2
Ho appena esaminato il codice che stavo eseguendo e qualcuno lo aveva codificato in un file di configurazione:
ini_set('memory_limit', '20M');
Che stava scavalcando tutto ciò che stavo facendo. Accidenti.
Altri suggerimenti
Il mio primo istinto è indovinare che PHP sta leggendo un php.ini diverso.
In Debian (e molto probabilmente Ubuntu), ogni versione di PHP (cli, cgi e apache) ha la sua copia di php.ini.
Potresti provare a impostarlo nel file .htaccess, questo è quello che dovevo fare per far funzionare un sito su un server.
ecco le impostazioni che ho usato:
php_value upload_max_filesize 50M
php_value post_max_size 60M
php_value memory_limit 128M