Tamaño de memoria permitido de X bytes agotado


Error fatal: Tamaño de memoria permitido de 67108864 bytes agotado (trató de asignar 13965430 bytes)

PHPInfo muestra que tengo un memory_limit de 128M, así que estoy confundido en cuanto a por qué el error dice que solo tengo 64M. ¿Es posible que phpinfo informe incorrectamente? O para PHP usar dos php separados.inis?

El error fue causado por una llamada ini_set en uno de los archivos php primarios que un compañero de trabajo mío agregó sin mi conocimiento.

Author: Uwe Keim, 2010-11-04

7 answers

La configuración de PHP se puede establecer en varios lugares:

  1. sistema maestro php.ini (generalmente en /etc en algún lugar)
  2. en algún lugar de la configuración de Apache (httpd.conf o por sitio .archivo conf, vía php_value)
  3. La CLI y el CGI pueden tener un php.ini diferente (use la orden php -i | grep memory_limit para verificar la configuración de la CLI)
  4. local .archivos htaccess (también php_value)
  5. in-script (vía ini_set())

En la salida de PHPinfo, el valor "Master" es el valor por defecto compilado, y el valor " Local" el valor es lo que realmente está en efecto. Puede ser sin cambios desde el valor predeterminado, o sobrescrito en cualquiera de las ubicaciones anteriores.

También tenga en cuenta que PHP generalmente tiene diferente .archivos ini para operaciones basadas en línea de comandos y servidor web. La comprobación de phpinfo() desde la línea de comandos reportará valores diferentes que si lo ejecutara en un script basado en web.

 33
Author: Marc B,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-01 07:31:17
ini_set('memory_limit', '128M'); 

O

php.ini  =>  memory_limit = 128M

O

php_value memory_limit 128M
 21
Author: şarkı dinle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-03-27 21:11:21

Tuve el mismo problema. Encontré la respuesta:

ini_set('memory_limit', '-1');

Nota: Tomará un uso ilimitado de memoria del servidor.

Actualización: Use esto con cuidado ya que esto podría ralentizar su sistema si el script PHP comienza a usar una cantidad excesiva de memoria, causando un gran uso de espacio de intercambio. Puede usar esto si sabe que el programa no tomará mucha memoria y también no sabe cuánto configurarlo ahora mismo. Pero eventualmente encontrará la cantidad de memoria que necesita para eso programa.

Siempre debe limitar la memoria como algún valor que responda @şarkı dinle.

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

Dar memoria ilimitada es una mala práctica, más bien deberíamos dar algún límite máximo que podamos soportar y luego optimizar nuestro código o agregar algunas RAMs.

 13
Author: Somnath Muluk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-23 09:54:15

La memoria debe configurarse en varios lugares.
Establecer memory_limit a 512M:

sudo vi /etc/php5/cgi/php.ini
sudo vi /etc/php5/cli/php.ini
sudo vi /etc/php5/apache2/php.ini Or /etc/php5/fpm/php.ini

Reiniciar el servicio:

sudo service service php5-fpm restart
sudo service service nginx restart

O

sudo service apache2 restart

Finalmente debe resolver el problema de la memory_limit

 4
Author: oussaka,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-08 08:16:09

Si está seguro de haber reiniciado Apache después de configurar php.ini, entonces usted podría estar mirando el php equivocado.ini file

 3
Author: stillstanding,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-11-04 12:27:33

Si al aumentar el límite de memoria ha eliminado el error y su código ahora funciona, deberá tomar medidas para disminuir el uso de memoria. Aquí hay algunas cosas que podría hacer para disminuirlo:

Si está leyendo archivos, léalos línea por línea en lugar de leer el archivo completo en la memoria. Mira fgets y SplFileObject::fgets. Actualice a una nueva versión de PHP si está utilizando PHP 5.3. PHP 5.4 y 5.5 usan mucha menos memoria.

Evite cargar grandes conjuntos de datos en una matriz. En su lugar, vaya a procesar subconjuntos más pequeños del conjunto de datos más grande y, si es necesario, mantenga los datos en una base de datos para aliviar el uso de memoria.

Pruebe la última versión o la versión menor de una biblioteca de terceros (1.9.3 vs.su 1.8.2, por ejemplo) y use la que sea más estable. A veces, las versiones más recientes de las bibliotecas se escriben de manera más eficiente.

Si tiene una extensión PHP poco común o inestable, intente actualizarla. Podría tener una pérdida de memoria.

Si está tratando con archivos grandes y simplemente no puede leerlos línea por línea, intente dividir el archivo en muchos archivos más pequeños y procesarlos individualmente. Deshabilita las extensiones PHP que no necesites.

En el área del problema, variables no configuradas que contienen grandes cantidades de datos y no se requieren más adelante en el código.

DE: https://www.airpair.com/php/fatal-error-allowed-memory-size

 1
Author: user3806549,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-17 15:41:17
1 check current limit:
(in my os)php -i | grep limit  => memory_limit => 256M => 256M

2  locate php.ini 
php --ini =>   
Configuration File (php.ini) Path: /etc
Loaded Configuration File:         /etc/php.ini
Scan for additional .ini files in: /etc/php.d
Additional .ini files parsed:      /etc/php.d/curl.ini 
...

3 change memory_limit in php.ini
vi /etc/php.ini
memory_limit = 512M

4 restart nginx and (php-fpm if being used)
service php-fpm restart
service nginx restart
 1
Author: terwxqian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-22 03:56:58