¿Cómo hago para que se muestren los errores de PHP?
Revisé mi archivo PHP ini ( php.ini
) y display_errors
está configurado y también aparece el informe de errores E_ALL
. He reiniciado mi servidor web Apache.
Incluso puse estas líneas en la parte superior de mi script y ni siquiera detecta errores de análisis simples. Por ejemplo, declaro variables con a "$"
y no cierro declaraciones ";"
. Pero todos mis scripts muestran una página en blanco sobre estos errores, pero realmente quiero ver los errores en la salida de mi navegador.
error_reporting(E_ALL);
ini_set('display_errors', 1);
¿Que más queda por hacer?
Entorno de desarrollo
Esto siempre funciona para mí:
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);
Sin embargo, esto no hace que PHP muestre errores de análisis ocurridos en el mismo archivo. Además, PHP puede anular estas configuraciones. En estos casos la única manera de mostrar esos errores es modificar tu php.ini (o php-fpm.conf) con esta línea:
display_errors = on
(Si no tienes acceso a php.ini
, entonces poner esta línea .htaccess
también podría funcionar):
php_flag display_errors 1
entorno de producción
Tenga en cuenta que la recomendación anterior solo es adecuada para el entorno DEV. En un sitio en vivo debe ser
display_errors = off
log_errors = on
Y luego podrá ver todos los errores en el registro de errores. Ver Dónde encontrar el registro de errores de PHP
llamadas AJAX
En caso de llamada AJAX, en un servidor DEV, abra DevTools (F12), luego la pestaña Red. Luego inicie la solicitud cuyo resultado desea ver y aparecerá en la pestaña Red. Haga clic en él y luego en la pestaña Respuesta. Allí verá el resultado exacto.
Mientras esté en un servidor en vivo, simplemente verifique el registro de errores de todos modos.
No puede detectar errores de análisis en el mismo archivo donde la salida de error está habilitada en tiempo de ejecución, porque analiza el archivo antes de ejecutar cualquier cosa (y dado que encuentra un error durante esto, no ejecutará nada). Deberá cambiar la configuración real del servidor para que display_errors esté activado y se utilice el nivel de error_reporting apropiado. Si no tiene acceso a php.ini, es posible que pueda utilizar .htaccess o similar, según el servidor.
Esta pregunta puede proporcionar información adicional.
Dentro de tu php.ini :
display_errors = on
Luego reinicie su servidor web.
Para mostrar todos los errores es necesario:
1. Tenga estas líneas en el script PHP que está llamando desde el navegador (normalmente index.php
):
error_reporting(E_ALL);
ini_set('display_errors', '1');
2.(a) Asegúrese de que este script no tenga errores de sintaxis
-o-
2.(b) Establezca display_errors = On
en suphp.ini
De lo contrario, ¡ni siquiera podrá ejecutar esas 2 líneas!
Puede comprobar si hay errores de sintaxis en su script ejecutando (en la línea de comando):
php -l index.php
Si incluye el script de otro script PHP, se mostrarán errores de sintaxis en el script incluido . Por ejemplo:
index.php
error_reporting(E_ALL);
ini_set('display_errors', '1');
// Any syntax errors here will result in a blank screen in the browser
include 'my_script.php';
my_script.php
adjfkj // This syntax error will be displayed in the browser
Algunos proveedores de alojamiento web le permiten cambiar los parámetros PHP en el .htaccess
archivo.
Puedes agregar la siguiente línea:
php_value display_errors 1
Tuve el mismo problema que el tuyo y esta solución lo solucionó.