Deshabilitar errores de estándares estrictos en WordPress 3.7 con PHP 5.4

4 minutos de lectura

avatar de usuario
jeremyzilar

Estoy tratando de deshabilitar el informe de errores ESTRICTO en WordPress 3.7 a través de mi archivo php.ini después de actualizar mi computadora a OS X 10.9. Estoy ejecutando la versión 5.4.17 de PHP, la que viene con Mavericks.

En mi archivo wp-config.php, he habilitado define('WP_DEBUG', true); que funcionaba bien antes de actualizar mi sistema operativo y, como resultado, PHP.

En el archivo php.ini, intenté configurar error_reporting en:

error_reporting = E_ALL

o

error_reporting = E_ALL & ~E_STRICT

o

error_reporting = E_ALL & ~E_DEPRECATED

incluso

error_reporting = 0

Pero los errores siguen apareciendo.

display_errors está desactivado:

display_errors = Off

Después de cada cambio en el archivo, reinicio apache y httpd con estos dos comandos:

httpd -k restart
apachectl restart

El archivo php.ini que estoy editando es el mismo que se indica en phpinfo() Y solo para asegurarme de que se están realizando los cambios, he estado editando el valor de error_prepend_string:

error_prepend_string = "<span style="color: #ff0000">ERROR: "

y esos cambios están llegando en el error.

Cualquier idea sobre cómo depurar esto sería muy apreciada.

  • Dentro de phpinfo() ¿cuál es el valor de error_reporting?

    – Jacobo

    25 de octubre de 2013 a las 1:36

  • phpinfo() también mostrará los valores de tiempo de ejecución locales y maestros reales para error_reporting y display_errors en el Centro sección, por favor comparte lo que muestran.

    – Niels Keurentjes

    25 de octubre de 2013 a las 1:37


  • @Jack El Valor local es ‘32767’. los Valor maestro es ‘sin valor’.

    – jeremyzilar

    25 de octubre de 2013 a las 1:37


  • Creo que es… error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT si mi memoria no me falla

    – xlordt

    25 de octubre de 2013 a las 1:38


  • También, error_reporting(0); no va a funcionar, por supuesto, en php.ini, eso debería ser error_reporting = 0. Pero 32767 ciertamente incluye E_STRICT (2048). O no está editando el archivo de configuración php correcto, o su código restablece el valor en algún lugar antes del phpinfo() llamar.

    – Niels Keurentjes

    25 de octubre de 2013 a las 1:39


avatar de usuario
adelval

En WordPress 3.7, la función wp_debug_mode (definido en wp-includes/load.phpy llamó desde wp-setings.php) conjuntos error_reporting( E_ALL ).

Ya que wp-settings.php se carga al final de wp-config.phpno puede cambiar esta configuración de wp-config.php (o más bien, puede, pero será anulado).

Una solución es crear un “complemento de uso obligatorio”, es decir, un archivo .php ubicado en el /wp-content/mu-plugins/ carpeta que contiene:

<?php
if (WP_DEBUG && WP_DEBUG_DISPLAY) 
{
   ini_set('error_reporting', E_ALL & ~E_STRICT & ~E_DEPRECATED);
}

  • Esto funciona parcialmente, porque ocurre algún error antes de que se cargue functions.php. +1 por la idea sin embargo 🙂

    – frnhr

    15 de noviembre de 2013 a las 18:55


  • No vi ningún error en mi prueba (limitada), aunque supongo que puede suceder al cargar complementos. Mirando a Orden de carga de WordPresstal vez una solución sea crear un complemento muy simple para configurar error_reporting, asegurándose de que se cargue antes que cualquier otro complemento (por defecto, se cargan en orden alfabético).

    – adelval

    16 de noviembre de 2013 a las 20:16

  • Para mejores resultados, use la solución provista por adelval, pero colóquela en un archivo .php como: /wp-content/mu-plugins/errorreporting.php. “mu” significa “must-use” y se cargará antes que el tema y los complementos, pero después de que se haya configurado el informe de errores. Tampoco hace falta que lo actives, ya que son de “uso obligatorio”.

    – Radley Sustaire

    28 de enero de 2014 a las 20:17


  • Gracias @Alexandre por la edición, mejora la respuesta al incorporar el comentario de RadGH

    – adelval

    28 de agosto de 2015 a las 17:26

  • Esto tampoco me ayudó, ya que el mensaje de error obsoleto se realiza incluso antes de que llegue al complemento mu. En mi caso el problema está en wp-db.php, donde el error es: Obsoleto: mysql_connect()

    –Kim Steinhaug

    11 de febrero de 2018 a las 15:28


avatar de usuario
jacob

Encontré que solo

error_reporting = off

funciona, ya que los errores ESTRICTOS se han convertido en parte de TODOS a partir de PHP 5.4, lo cual es molesto.

Si establece WP_DEBUG en ‘falso’ en el archivo wp-config.php. Estos no afectan a su sitio web.

Bot el problema es que arriba no funciona en algún momento. Eso puede suceder en alojamientos baratos/compartidos que obligan a mostrar ERRORES, advertencias y avisos de PHP. En ese caso, puede eliminar esta línea de su archivo wp-config.php:

define('WP_DEBUG', false);

y coloca esto:

ini_set('log_errors','On');
ini_set('display_errors','Off');
ini_set('error_reporting', E_ALL );
define('WP_DEBUG', false);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);

en mi caso esta funcionando.

¿Ha sido útil esta solución?