Un usuario preguntó 👇
Hola. Esta página de documentación indica que si tengo el siguiente conjunto en el archivo wp-config.php, no se mostrarán mensajes PHP en la pantalla:
define(' WP_DEBUG', false );
define( 'WP_DEBUG_DISPLAY', false );
define( 'WP_DEBUG_LOG', false );
¿Estoy entendiendo eso correctamente? Es decir, ¿puedo configurar WP_DEBUG_DISPLAY en falso y esperar que los mensajes PHP * nunca * aparezcan en la pantalla? Lo pregunto porque para tres sitios separados, ese no fue el caso. Recientemente, tuve un sitio que mostraba una advertencia de PHP y un error fatal de PHP en la pantalla. En otro sitio, imprimió advertencias PHP en la pantalla (captura de pantalla).
En el último caso, la advertencia se refería a un archivo principal de WordPress, pero se mostraba en el control deslizante Slide Revolution. Pregunté a los desarrolladores de Slider Revolution y no sabían por qué se imprimieron las advertencias. Pero me dijeron que agregara código adicional a wp-config para suprimirlos:
ini_set('display_errors','Off');
ini_set('error_reporting', E_ALL );
Ese código en realidad suprimió las advertencias. También llamé a mi servidor web (SiteGround) y me dijeron lo mismo: no saben por qué WP_DEBUG_DISPLAY no suprime las advertencias, pero siempre agregan las líneas ini_set adicionales a wp-config.
En ese caso también, el problema estaba presente en mi sitio en vivo, pero no en mi sitio de escenario (que está en otro servidor, no en SiteGround) o en mi sitio de desarrollo local.
Este tema fue modificado hace 1 año, 3 meses por. Este tema fue modificado hace 1 año, 3 meses por.
(@jdembowski)
Moderador del foro y Bruto Squad
Hace 1 año, 3 meses
Movido a Fix WordPress, esto no es una cuestión de Desarrollar con WordPress tanto como de pasos para solucionar problemas.
¿WP_DEBUG_DISPLAY siempre debe configurarse para ocultar mensajes PHP falsos?
Creo que es una cuestión de buenas prácticas. Por lo general, no se trata de seguridad, pero mostrar errores no ayuda a sus visitantes.
Si habilita WP_DEBUG, mi recomendación es iniciar sesión en un archivo. Asegúrese de desactivarlo después de obtener la información de depuración que está buscando.
Si tiene acceso a un archivo en el servidor web, digamos a través de ssh o cpanel y luego coloque el archivo donde el servidor web no pueda enviarlo a nadie.
(@autotutorial)
Hace 1 año, 3 meses
El WSOD se agregó desde wordpress 5.2 y debería recibir errores o advertencias de php, así como errores fatales si está habilitado. con la función error_get_last () también es posible recuperar errores fatales. https://developer.wordpress.org/reference/functions/wp_is_fatal_error_handler_enabled/ en php 7 los errores se convierten en excepciones (en php legacy puede ser cualquier cosa, por ejemplo, estoy en php 7.1 y el comportamiento es que tengo php 5, tuve que crear set_error_handle para eliminar los errores porque no puedo usar la función ini_set). WordPress solo puede eliminar errores define( 'WP_DEBUG_DISPLAY', false );
, si ini_set no está deshabilitado y load.php no tiene un error. https://github.com/WordPress/WordPress/blob/master/wp-includes/load.php#L277
los errores fatales serán interceptados con error_get_last () (si su proveedor lo deshabilita o no ha activado una gestión de errores o excepciones en la misma llamada, esto es para php 5)
(@carlgross)
Hace 1 año, 2 meses
@jdembowski Gracias por la respuesta. Pero parece que has respondido a esta pregunta,
>> ¿Debo falso WP_DEBUG_DISPLAY para ocultar siempre los mensajes PHP?
Eso no es lo que estoy pidiendo. Estoy diciendo que estoy asentado define( 'WP_DEBUG_DISPLAY', false );
Los mensajes PHP todavía se muestran en mi pantalla. ¿Es eso esperado o es un error?
@autotutorial Gracias por tu información. Pero no estoy seguro de haber entendido todo. Para empezar, puedo decir que estaba usando WordPress 5.4 en ambos casos. Me temo que no entendí completamente lo que estaba diciendo sobre PHP 7, ¿puede aclararlo?
Parece que solo se refiere a errores de PHP. Puedo decir que vi advertencias de PHP en pantalla. Debe ser arreglado define( 'WP_DEBUG_DISPLAY', false );
suprimir todas las advertencias?
¡Gracias!
(@autotutorial)
Hace 1 año, 2 meses
crear test.php
<?php
error_reporting(-1);
ini_set('display_errors','Off');
crear myload.php
<?php
include dirname(__FILE__).'/test.php';
//Constant undefined
Myconst;
Carrera http://mydomain.com/myload.php
cuando habilita la depuración, puede apagar la visualización de errores; de lo contrario, los errores siempre aparecen.
<?php
//good
define('WP_DEBUG', true);
define('WP_DEBUG_DISPLAY', false);
<?php
//Bad
define('WP_DEBUG', false);
define('WP_DEBUG_DISPLAY', false);
Esta respuesta fue modificada hace 1 año, 2 meses por. Causa: arreglar
(@carlgross)
Hace 1 año, 2 meses
@autotutorial De acuerdo, gracias por eso. Déjame intentar entender lentamente. Si podemos, hasta ahora, ignorar las líneas de error de PHP:
error_reporting(-1);
ini_set('display_errors','Off');
Estas diciendo eso define('WP_DEBUG_DISPLAY', false);
no suprimirá los mensajes PHP * pero * si WP_DEBUG
ajustado a true
? ¿O esa relación realmente depende de las dos líneas de error de PHP que mencionó anteriormente, es decir,
error_reporting(-1);
ini_set('display_errors','Off');
¿O estoy listo para todo?
(@autotutorial)
Hace 1 año, 2 meses
es solo un código de prueba que debe probar; de lo contrario, no lo entenderá. Las constantes de WordPress no se asignarán y en el caso de WP_DEBUG_DISPLAY / WP_DEBUG_LOG solo si WP_DEBUG es verdadero, a menos que WP_DEBUG_LOG se establezca explícitamente en falso, se creará debug.log
(@carlgross)
Hace 1 año, 2 meses
Bien gracias. Creo que entiendo lo que estás diciendo. Si habilito WP_DEBUG, entonces puedo suprimir los mensajes PHP con WP_DEBUG_DISPLAY. ¿Estoy empezando a entender?
Si es así, ¿qué pasa si quiero mantener WP_DEBUG deshabilitado, pero también suprimir los mensajes PHP? ¿Cuál sería el enfoque correcto? ¿Está bien agregar esto a wp-config:
ini_set('display_errors','Off');
ini_set('error_reporting', E_ALL );
O reemplácelo con:
error_reporting(-1);
ini_set('display_errors','Off');
Supongo que puedo hacer una investigación PHP sobre eso yo mismo.
(@autotutorial)
Hace 1 año, 2 meses
ini_set
Cuando WP_DEBUG con el valor booleano es verdadero, comprueba si WP_DEBUG_DISPLAY tiene el valor booleano falso, en el primero (WP_DEBUG_DISPLAY con valor falso), WordPress establece un error de visualización con ini_set para apagarlo.
ini_set( 'display_errors', 0 );
Si es así, ¿qué pasa si quiero mantener WP_DEBUG deshabilitado, pero también suprimir los mensajes PHP? ¿Cuál sería el enfoque correcto? ¿Está bien agregar esto a wp-config:
ini_set( 'display_errors', 0 );
contenido avanzado, si su servidor corrige la visualización del error (php.ini o user.ini o marca htaccess). Cuando hay un error fatal y WordPress 5.2 WSOD funciona, vaya al modo de recuperación o su pantalla le mostrará el error.
(@carlgross)
Hace 1 año, 2 meses
@autotutorial Está bien, agradezco la información, gracias. Llamamos a esto resuelto entonces 🙂
¿Solucionó tu problema??
0 / 0