Error fatal: sin memoria al agregar una publicación en WP

7 minutos de lectura

Estoy recibiendo este desagradable error Fatal error: Out of memory (allocated 18087936) (tried to allocate 77824 bytes). Lo extraño es que tiene 17,25 mb (asignados) y trató de asignar 76 kb. El límite de memoria es de 128 MB y, como puede ver, no está ni cerca de eso. VPS obtuvo ~ 400 MB de RAM gratis en ese momento. Solo sucede cuando estoy publicando algo y no todo el tiempo. Lo encuentro raro y realmente no sé qué puede causarlo. Avíseme si necesita información adicional.

  • ¿Dice en qué archivo sucede?

    – romainberger

    16/04/2013 a las 14:45

  • Registre la función de apagado (por ejemplo, así). Agregue algún código para registrar el estado de la máquina (consumo de memoria actual, memoria disponible, etc.) Analice los registros, lo más probable es que la memoria disponible sea muy poca en el momento del error.

    – J0HN

    16 de abril de 2013 a las 14:48

  • ¿Qué módulos de WP está utilizando y puede discernir algún patrón con respecto a los archivos en los que esto sucede? ¿Quizás todos pertenecen a un módulo o están todos relacionados con una tarea?

    – Quinn Strahl

    16/04/2013 a las 14:50


  • puedes agregar ini_set(‘memory_limit’, ‘128M’); en línea en su código y verifique si eso tiene un impacto en el mensaje de error. phpinfo() e ini_get(‘memory_limit’) a veces informan cosas que no se corresponden con la realidad. también puede probar con un valor más bajo, decir ini_set(‘memory_limit’, ’30M’); e informar sus hallazgos.

    – eis

    16/04/2013 a las 14:50


  • romainberger, siempre archivos diferentes. desde wordpress (como post.php) hasta archivos de diferentes módulos. quinn strahlno noté ningún patrón hasta ahora, excepto que solo ocurre cuando agrego nuevas publicaciones (no siempre). J0HNintentaré

    – Ígor Yavych

    16/04/2013 a las 20:12

El error dice que el límite de memoria es 18M y no 128M. Esto significa que, en algún lugar, memory_limit está configurado en algo diferente a 128M (php.ini local o la aplicación en sí, ya que PHP puede anular esta configuración en tiempo de ejecución).

Le sugiero que primero cree un archivo llamado (digamos) phpinfo.php con los siguientes contenidos:

<?php
phpinfo();
?>

y colóquelo donde se ejecuta su script. Luego acceda al archivo con su navegador y busque el valor real de memory_limit. Si todavía muestra 128M tanto para el valor “global” como para el “local”, probablemente en algún lugar de su código haya un “ini_set(“memory_limit”, $value);” llamada o algo similar. De lo contrario, si dice 18M, busque otros lugares donde se pueda configurar:

  • Revisa tu archivo wp-config.php
  • Busque cualquier archivo php.ini local (mire en la página phpinfo.php para ver la ubicación del archivo php.ini cargado)
  • Verifique si hay archivos .htaccess que contengan dicha directiva

  • Muestra un límite de memoria de 128 mb. Revisé mi carpeta de instalación de wp en busca de un cambio de límite de memoria a través de ini_set. No encontré ninguno que realmente pudiera cambiarlo.

    – Ígor Yavych

    14 de abril de 2013 a las 14:08


  • puedes poner un echo ini_get('memory_limit'); dentro del script que causa el error? (cuanto más cerca de la línea de error, mejor)

    – Periklis

    14/04/2013 a las 14:35

  • archivo siempre diferente y línea diferente

    – Ígor Yavych

    14/04/2013 a las 15:05

  • aun así, si lo pones en algún archivo que en algún momento produjo un error, ¿qué dice?

    – Periklis

    14/04/2013 a las 18:04

  • ¿Es este un host compartido o un servidor dedicado? ¿Está seguro de que hay tantos MB de memoria libre en el momento del error? Aunque seguro que ya lo has comprobado, echa un vistazo a wordpress.org/support/topic/…

    – Periklis

    14/04/2013 a las 19:04

Espero que esto ayude, ya que tuve el mismo problema:

Te estás encontrando con una limitación en Límite de memoria propio de WordPress, no su límite de memoria PHP. WordPress implementó este límite para evitar que los scripts mal escritos apaguen todo su intérprete de PHP. Desafortunadamente, como habrás notado, es bastante básico.

La forma más fácil que he encontrado para arreglar esto es instalar el Cambiar límite de memoria complemento del repositorio de complementos de WordPress. Le permite solucionar el problema sin modificar ningún archivo WP manualmente.

El valor predeterminado de 64M para el complemento probablemente esté bien para usted.

Alternativamente, si no desea confiar en un complemento de terceros, agregue la siguiente línea a wp-config.php:

define('WP_MEMORY_LIMIT', '64M');

  • Supongo que lo intentaré a ver si hace algo.

    – Ígor Yavych

    22 de abril de 2013 a las 11:23

  • No ayudó. Todavía sin memoria con 18 MB asignados

    – Ígor Yavych

    23 de abril de 2013 a las 7:40

  • las definiciones pueden almacenarse en caché mediante una extensión de almacenamiento en caché de código de operación como APC. Sería útil si realmente hiciera eco del valor de WP_MEMORY_LIMIT para asegurarse de que su valor sea el que configuró (por ejemplo, dentro de la función register_shutdown_function que publicó anteriormente)

    – Periklis

    23 de abril de 2013 a las 9:49


  • Intenta hacer eco WP_MEMORY_LIMIT de algún guión.

    – Deseo de falla

    24 de abril de 2013 a las 14:05

Lo obtuve de esto http://wordpress.org/support/topic/fatal-error-out-of-memory-messages?replies=24#post-1929111pensé en compartirlo con ustedes:

ESTO SE INGRESARÁ EN EL ARCHIVO WP-CONFIG QUE SE ENCUENTRA EN LA RAÍZ DE LA CONFIGURACIÓN DE WORDPRESS: INGRESE DESPUÉS: 
define('ABSPATH', dirname(__FILE__)."https://stackoverflow.com/");
EL SEGUIMIENTO:

define('WP_MEMORY_LIMIT', '64M');

CREE TAMBIÉN UN PHP.INI QUE DEBE CARGARSE EN LA CARPETA DE PLUGIN EN WP-CONTENT:

 `memory_limit = 128M; //Maximum amount of memory a script may consume (64MB)
`

max_execution_time = 45;


upload_max_filesize = 15M;


post_max_size = 30M;

¡Espero que esto ayude!

Solo una opción que me ayudó a depurar estos errores.

Si tiene acceso a .htaccess, puede probar esto:

php_value upload_max_filesize 128M
php_value post_max_size 128M
php_value max_execution_time 300
php_value max_input_time 300

Si eso no ayuda, puede intentar esto para verificar la configuración:

echo 'Max upload size: ' . ini_get('upload_max_filesize') . '<br />';
echo 'Max post size: ' . ini_get('post_max_size') . '<br />';
echo 'Memory limit: ' . ini_get('memory_limit');

Espero que esto funcione, para mí lo hizo.

No estoy seguro de que esto provoque el error, pero vale la pena comprobarlo.

Muchos de los errores patéticos de falta de memoria más imposibles de rastrear son causados ​​por:

1) Manejadores de excepciones definidos por el usuario, causando excepciones, por lo tanto, recurrentes.

2) Lo anterior + tratando de obtener información de clase del objeto que origina la excepción, y la prueba de información de clase provoca un intento de carga automática, en el que la carga automática arroja otra excepción y, por lo tanto, recurrente.

¿Ha hecho algo que entra en conflicto con el manejo de errores o la carga automática de WP?

avatar de usuario
TÉCNICO N

yo instalo wp-memoria-uso complemento por alexrabe en todos mis sitios de WordPress.

Este complemento lo ayuda a ver lo que WordPress está viendo en términos de su uso de memoria PHP. Otros enfoques pueden mostrarle la configuración de PHP en el servidor, sin embargo, esta configuración a menudo se anula con varias técnicas a medida que se acerca a una página renderizada dentro del navegador.

Para configurar su memoria máxima -> abra su editor de texto favorito y cree un archivo llamado php.ini; incluya en el archivo la siguiente línea:

memory_limit = 256M

Coloque una copia de php.ini en su directorio raíz de WordPress. También coloco copias en: /wp-admin; /wp-contenido; y /wp-incluye.

avatar de usuario
aakash

Agregar define('WP_MEMORY_LIMIT', '256M'); en su archivo wp-config.php. Es la forma más fácil.

  • me parece estúpido. ¿Qué sentido tiene aumentar el memlimit si ni siquiera está cerca del actual?

    – Ígor Yavych

    20 de abril de 2013 a las 14:28

¿Ha sido útil esta solución?