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.

Foi útil?

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top