Pregunta ¿Cómo tener errores de visualización de PHP? (He agregado ini_set y error_reporting, pero solo da 500 en los errores)


Entonces, realmente no tengo ningún error en mi página web actual, pero quiero poder ver un error cuando aparecen, en lugar de la página de error HTTP 500. Busqué en Google un poco y pensé que agregar estas dos líneas arreglaría todo.

ini_set('display_errors', 'On');
error_reporting(E_ALL);

NOTA: No tengo acceso al archivo php.ini, ya que estoy usando el servidor de mi cuenta de la escuela.

Así que presenté un error (sin punto y coma después de $ buggy) como en la parte superior de mi página:

<?php 
ini_set('display_errors', 'On');
error_reporting(E_ALL);
$buggy

$x = 4 + 2;
...

Sin embargo, acabo de recibir un error del servidor:

"El sitio web encontró un error al recuperar http://mywebpage.com/. Puede estar fuera de servicio o configurado incorrectamente ".

¿Algunas ideas?

EDITAR:

He reconfigurado mi código:

<?php 
include_once 'database/errorSettings.php';
?>
<?php 

$buggy // whoops
$x = 4 + 2;
...

errorSettings.php es el siguiente:

<?php
    ini_set('display_errors', 'On');
    error_reporting(E_ALL);
?>

Pero todavía no funciona ... ¿forma incorrecta de reconfigurar?


32
2018-04-10 05:30


origen


Respuestas:


Lo que tienes es un error de análisis. Esos lanzamientos antes de que se ejecute cualquier código. Un archivo PHP necesita ser analizado en su totalidad antes de que se pueda ejecutar cualquier código en él. Si hay un error de análisis en el archivo donde está configurando los niveles de error, no tendrán efecto cuando se produzca el error.

O divide tus archivos en partes más pequeñas, como establecer los niveles de error en un archivo y luego includede otro archivo que contiene el código real (y errores), o establezca los niveles de error fuera de PHP utilizando las directivas php.ini o .htaccess.


13
2018-04-10 05:37



Debe establecer el valor de error_reporting en un archivo .htaccess. Como hay un error de análisis, nunca ejecuta la función error_reporting () en su código PHP.

Pruebe esto en un archivo .htaccess (suponiendo que puede usar uno):

php_flag display_errors 1
php_value error_reporting 30719

Creo que 30719 corresponde a E_ALL, pero puedo estar equivocado.

Editar actualización:  http://php.net/manual/en/errorfunc.constants.php

int error_reporting ([ int $level ] )
---
32767   E_ALL (integer)     
All errors and warnings, as supported, except of   level E_STRICT prior to PHP 5.4.0.   32767 in PHP 5.4.x, 30719 in PHP 5.3.x, 6143 in PHP   5.2.x, 2047 previously

12
2018-04-10 05:34



Añadiendo a lo que deceze dijo arriba. Este es un error de análisis, por lo que para depurar un error de análisis, cree un nuevo archivo en la raíz llamada debugSyntax.php. Pon esto en esto:

<?php

///////    SYNTAX ERROR CHECK    ////////////
error_reporting(E_ALL);
ini_set('display_errors','On');

//replace "pageToTest.php" with the file path that you want to test. 
include('pageToTest.php'); 

?>

Ejecute la página debugSyntax.php y mostrará los errores de análisis de la página que eligió para probar.


5
2017-08-10 21:19



Simplemente escriba el siguiente código en la parte superior del archivo PHP:

ini_set('display_errors','on');

2
2018-01-03 08:28



He tenido este problema al usar PHP5.4 y Plesk 11.5

De alguna manera, los ajustes de informe de error y de error de visualización en la página de configuración del dominio de Plesk anulaban por completo cualquier configuración local en .htaccess o los scripts de PHP. No he encontrado una manera de evitar que esto ocurra, así que use la configuración de Plesk para activar y desactivar el informe de errores.

Puede tener configuraciones en su php.ini que impidan que el sitio local anule estas configuraciones, tal vez impuestas por el panel de control utilizado en su servidor.


0
2017-08-08 14:07



Para las personas que usan Codeigniter (estoy en C3):

El archivo index.php sobrescribe la configuración de php.ini, por lo que en el archivo index.php, línea 68:

case 'development':
        error_reporting(-1);
        ini_set('display_errors', 1);
    break;

Puede cambiar esta opción para configurar lo que necesita. Aquí está la lista completa:

1   E_ERROR
2   E_WARNING
4   E_PARSE
8   E_NOTICE
16  E_CORE_ERROR
32  E_CORE_WARNING
64  E_COMPILE_ERROR
128 E_COMPILE_WARNING
256 E_USER_ERROR
512 E_USER_WARNING
1024    E_USER_NOTICE
6143    E_ALL
2048    E_STRICT
4096    E_RECOVERABLE_ERROR

Espero eso ayude.


0
2018-03-20 03:01



Los errores de sintaxis no se comprueban fácilmente en servidores externos, solo errores de tiempo de ejecución.

¿Lo que hago? Al igual que tú, yo uso

ini_set('display_errors', 'On');
error_reporting(E_ALL);

Sin embargo, antes de ejecutar compruebo los errores de sintaxis en un archivo PHP usando un corrector de sintaxis PHP en línea.

Lo mejor, en mi humilde opinión Comprobador de código PHP

Copio todo el código fuente, pego dentro del cuadro principal y hago clic en Analyze botón.

No es el método más práctico, pero los 2 procedimientos son complementarios y resuelve el problema completamente


0
2018-02-10 00:07