Para los entornos de WordPress, generalmente no hay razón para usar ini_set
porque eso es lo que las constantes definidas proporcionadas por WordPress Core ya están logrando. La forma en que funciona PHP es que ciertas configuraciones pueden anularse dentro de su CMS (WordPress), dentro de scripts individuales, e incluso por usuario o por directorio (para frustración de los servidores web y agencias).
Para deshabilitar la visualización de errores en la página en WordPress, la única configuración que realmente necesita es:
define('WP_DEBUG', false);
... porque cuando WP_DEBUG
está desactivado, las subopciones están inactivas:
define('WP_DEBUG_DISPLAY', false);
define('WP_DEBUG_LOG', false);
Tenga en cuenta que la WP_DEBUG_LOG
opción confusa solo se refiere a la creación debug.log
dentro del directorio wp-content
y no afecta a otras configuraciones de registro, etc.
Una vez más, la configuración en WordPress puede anular la configuración predeterminada de PHP, por lo que su configuración de PHP no importa tanto como tener la configuración correcta en su wp-config.php
archivo, que se carga antes que otros componentes de WP.
Dicho esto, es una buena idea implementar la configuración predeterminada como se muestra a continuación en producción:
error_reporting = E_ERROR | E_WARNING | E_PARSE
display_errors = Off
display_startup_errors = Off
log_errors = On
error_log = /var/www/logs/error.log
log_errors_max_len = 1024
ignore_repeated_errors = On
ignore_repeated_source = Off
report_memleaks = On
xmlrpc_errors = 0
html_errors = Off
Para un ejemplo completo, consulte nuestro archivo SlickStack php.ini optimizado para Nginx y PHP-FPM.
En un caso, después de horas de investigación, nos dimos cuenta de que un complemento (o tema) estaba anulando las diversas configuraciones de manejo de errores establecidas previamente en php.ini
y wp-config.php
. La única forma de evitar esto es eliminar el complemento o tema de WordPress que está tratando de "piratear" la configuración de PHP, o decirles que lo eliminen porque es una muy mala práctica que las extensiones anulen las opciones de depuración de su CMS.
En SlickStack, creamos un script bash que "banderas" cualquier ini_set
y error_reporting
líneas de un fichero PHP en la cara /themes/
y /plugins/
directorios, poniendo de relieve esas instancias con un plugin de MU (script PHP) que muestra una lista de estos "cortes" en el tablero de instrumentos de administración de WP.