2012-04-10 11 views
31

Por lo tanto, realmente no tengo ningún error en mi página web actual, pero quiero poder ver un error cuando aparecen, en su 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.¿Cómo tener errores de visualización de PHP? (He agregado ini_set y error_reporting, pero solo da 500 en los errores)

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 introdujo un error (sin punto y coma después $ cochecito) al igual que en la parte superior de mi página:

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

$x = 4 + 2; 
... 

Sin embargo, apenas consigo un error del servidor:

"El sistema encontró una error al recuperar http://mywebpage.com/. Puede estar fuera de servicio por mantenimiento o configurado incorrectamente ".

¿Alguna idea?

EDIT:

he reconfigurado mi código:

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

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

errorSettings.php es la siguiente:

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

Pero todavía no funciona ... camino equivocado reconfigurar?

+0

¿Tiene redirigir un error en su archivo .htaccess? – Interrobang

+1

parece confundir los errores de Apache con php. –

+0

No estoy seguro de lo que eso significa. No creo tener acceso al archivo .htaccess, pero tal vez me permita verificarlo. Además, no sé si esto es relevante, pero el único error en la página es el punto y coma faltante. Si lo saco, la página se carga bien. (verificando si puedo encontrar dicho archivo .htaccess) –

Respuesta

12

Lo que tenemos 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 configurar los niveles de error en un archivo y luego include ing otro archivo que contiene el código real (y errores) o establecer los niveles de error fuera de PHP utilizando php.ini o. directivas htaccess.

+0

De acuerdo, he reconfigurado mi código como el anterior (en mi edición), pero parece que no funciona. Voy a darle otra oportunidad. –

+0

Primero, se debe ejecutar el archivo que establece las configuraciones de error. Si el error de análisis está en el archivo que incluye el archivo que establece la configuración del error, eso no ayuda. – deceze

+0

Oh, entonces necesito revertir mi inclusión ... más o menos, ¿verdad? –

12

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.

Prueba esto en un archivo .htaccess (suponiendo que usted puede utilizar uno):

php_flag display_errors 1 
php_value error_reporting 30719 

Creo 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 
+0

Parece que no tengo acceso al archivo .htaccess :( –

+1

Nota: en algunos casos (como las funciones faltantes en circunstancias funky) también es posible que deba habilitar 'display_startup_errors' – srcspider

+0

Sí, display_startup_errors debe estar' on'/'1'. Además, puse una explicación de nivel. – danielpopa

0

he tenido este problema cuando se utiliza PHP5.4 y Plesk 11.5

De alguna manera, la configuración de error de informe de errores y mostrar en la página de configuración de dominio Plesk fueron anulando por completo los ajustes locales en .htaccess o los scripts 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 evita que el sitio local anule estas configuraciones, quizás impuestas por el panel de control utilizado en su servidor.

2

Sólo tiene que escribir un código siguiente en la parte superior del archivo PHP:

ini_set('display_errors','on'); 
+2

Eso es exactamente lo que ya tienen ... – glglgl

4

Agregando a lo deceze dicho anteriormente. 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. Poner esto en él:

<?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'); 

?> 

ejecutar la página debugSyntax.php y se mostrará analizar los errores de la página que ha elegido para probar.

0

Para la gente que usa CodeIgniter (estoy en C3):

El archivo index.php sobrescribir la configuración 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 cambie esta opción para establecer 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 que ayude.

0

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

¿Qué hago? Al igual que usted, yo uso

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

Sin embargo, antes de ejecución puedo comprobar errores de sintaxis en un archivo PHP utilizando un comprobador de sintaxis PHP en línea.

La mejor, en mi humilde opinión es PHP Code Checker

copio todo el código fuente, pegue dentro del cuadro principal y haga clic en el botón Analyze.

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

Cuestiones relacionadas