O que está limitando meus recursos PHP?
Pergunta
Eu estou tendo um problema obtendo mais de memória do PHP.
Esta é a mensagem de erro:
Fatal error: Allowed memory size of 20971520 bytes exhausted (tried to allocate 82 bytes) in ...
No entanto:
Eu configurei memory_limit no arquivo php.ini para 32M:
memory_limit = 32M;
Eu também tentei substituí-lo manualmente no script real:
ini_set('memory_limit', '32M');
E - aqui é onde eu estou perdido - Eu já confirmou através de phpinfo () que este arquivo php.ini é o arquivo ini real usado, eo memory_limit parece estar definida corretamente. A linha em memory_limit dá a este:
memory_limit 32M 32M
Assim, parece que tudo está configurado corretamente, mas eu só estou ficando 20971520 bytes (~ 20m).
Onde mais eu deveria estar olhando para descobrir onde esta limitação está sendo imposta?
EDIT: eu estou correndo php sob nginx / fastcgi, no Ubuntu 9.04 em um VPS. Os processos php-cgi não parecem ser um pouco de recursos com fome (RES = 25m, VIRT = 187m), mas eu tenho 10m de memória física livre e 500m do espaço swap livre.
Solução 2
Eu só se debruçaram sobre o código que eu estava correndo, e alguém tinha codificado isso em um arquivo de configuração:
ini_set('memory_limit', '20M');
Qual foi substituindo tudo o que eu estava fazendo. Ufa.
Outras dicas
Meu primeiro instinto é adivinhar que o PHP está lendo um php.ini diferente.
Em Debian (e provavelmente Ubuntu), cada versão do PHP (cli, cgi, e apache) tem a sua própria cópia do php.ini.
Você poderia tentar defini-lo no arquivo .htaccess, que é o que eu tinha que fazer para obter um site que trabalha em um servidor.
aqui estão as configurações que eu usei:
php_value upload_max_filesize 50M
php_value post_max_size 60M
php_value memory_limit 128M