Pregunta

Tengo un problema para obtener más memoria de PHP.

Este es el mensaje de error:

Fatal error: Allowed memory size of 20971520 bytes exhausted (tried to allocate 82 bytes) in ...

Sin embargo:

He establecido memory_limit en el archivo php.ini a 32M:

memory_limit = 32M;

También he intentado anularlo manualmente en el script real:

ini_set('memory_limit', '32M');

Y, aquí es donde estoy perdido, confirmé a través de phpinfo () que este archivo php.ini es el archivo ini real utilizado, y el límite de memoria parece estar configurado correctamente. La línea en memory_limit da esto:

memory_limit    32M 32M

Parece que todo está configurado correctamente, pero solo obtengo 20971520 bytes (~ 20M).

¿Dónde más debería estar buscando averiguar dónde se impone esta limitación?

EDITAR: Estoy ejecutando php en nginx / fastcgi, en Ubuntu 9.04 en un VPS. Los procesos php-cgi parecen tener un poco de recursos (RES = 25m, VIRT = 187m), pero tengo 10m de memoria física libre y 500m de espacio de intercambio libre.

¿Fue útil?

Solución 2

Acabo de revisar el código que estaba ejecutando, y alguien había codificado esto en un archivo de configuración:

ini_set('memory_limit', '20M');

Que estaba anulando todo lo demás que estaba haciendo. Whew.

Otros consejos

Mi primer instinto es adivinar que PHP está leyendo un php.ini diferente.

En Debian (y muy probablemente Ubuntu), cada versión de PHP (cli, cgi y apache) tiene su propia copia de php.ini.

Puedes intentar configurarlo en el archivo .htaccess, eso es lo que tuve que hacer para que un sitio funcione en un servidor.

aquí están las configuraciones que utilicé:

php_value  upload_max_filesize  50M
php_value  post_max_size  60M
php_value  memory_limit  128M
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top