El motivo por el cual no se visualizaban esos errores era porque la directiva display_errors estaba desactivada:
Determina si los errores deberían ser impresos en pantalla como parte de la salida o si deberían ocultarse al usuario.
por defecto su valor es OFF (desactivado), para cambiarlo solo hay que ir al php.ini (archivo de configuración de PHP) y cambiar su valor de OFF a ON.
Para saber donde se encuentra ese archivo basta con ejecutar el siguiente código:
<?php echo phpinfo() ?>
y el valor de "Configuration File (php.ini) Path" que aparece en la página que se genera, será la dirección que buscamos.
Para abrir el php.ini desde la consola en Ubuntu lo hacemos así:
Cuando instalas PHP en otro sistema operativo también vas a disponer de ese archivo de configuración, solo cambia el path, es decir, su ubicación.
También podemos configurar que errores se van a mostrar, eso lo hacemos con la directiva error_reporting.
En PHP4 y PHP5 el valor predeterminado es E_ALL & ~E_NOTICE (cualquier error menos las anotaciones), en la versión 5.3 ya se incluye E_DEPRECATED, por defecto el valor es el siguiente:
Se puede personalizar de manera que se muestren solo los errores que queramos, eso lo haremos usando las constantes predefinidas por PHP.
Principales constantes:
E_ERROR indica que se ha producido un error fatal que impide la ejecución del script.
E_WARNING indica una advertencia, la ejecución del script continua.
E_NOTICE indica anotaciones sobre posibles errores, por ejemplo, variables no inicializadas, equivocaciones en los nombres de dichas variables, etc.
Trabajando con la visualización de errores en tiempo de ejecución
Se puede dar el caso de que no tengamos acceso al archivo de configuración, PHP nos facilita algunas funciones para el manejo de errores cuando el sistema se este ejecutando, que bueno ¿verdad?
Usando error_reporting.
No hay que olvidar los tips de php.net
Fuentes:
http://www.php.net
Para abrir el php.ini desde la consola en Ubuntu lo hacemos así:
sudo gedit /etc/php5/apache2/php.ini
nota:
Siempre que modifiques el php.ini si quieres que los cambios tengan efecto inmediato, debes reiniciar el servidor; Para el caso concreto de que uses Apache sobre Ubuntu, lo haces así (desde la terminal): sudo /etc/init.d/apache2 restartCuando instalas PHP en otro sistema operativo también vas a disponer de ese archivo de configuración, solo cambia el path, es decir, su ubicación.
También podemos configurar que errores se van a mostrar, eso lo hacemos con la directiva error_reporting.
Establece el nivel de notificación de errores
En PHP4 y PHP5 el valor predeterminado es E_ALL & ~E_NOTICE (cualquier error menos las anotaciones), en la versión 5.3 ya se incluye E_DEPRECATED, por defecto el valor es el siguiente:
; muestra toda clase de errores menos los E_DEPRECATED
error_reporting = E_ALL & ~E_DEPRECATED
error_reporting = E_ALL & ~E_DEPRECATED
Se puede personalizar de manera que se muestren solo los errores que queramos, eso lo haremos usando las constantes predefinidas por PHP.
Principales constantes:
E_ERROR indica que se ha producido un error fatal que impide la ejecución del script.
E_WARNING indica una advertencia, la ejecución del script continua.
E_NOTICE indica anotaciones sobre posibles errores, por ejemplo, variables no inicializadas, equivocaciones en los nombres de dichas variables, etc.
nota:
No se aconseja usar la visualización de errores si la pagina ya se encuentra en producción, ya que de lo contrario puede revelar información relevante, es decir, si la el sistema ya no se encuentra en periodo de prueba, lo recomendable es dejar la directiva display_errors en OFF.Trabajando con la visualización de errores en tiempo de ejecución
Se puede dar el caso de que no tengamos acceso al archivo de configuración, PHP nos facilita algunas funciones para el manejo de errores cuando el sistema se este ejecutando, que bueno ¿verdad?
La función ini_set se usa para establecer u obtener el valor de una directiva de configuración.
El nuevo valor establecido se mantendrá durante la ejecución del script, y se restaurará cuando acabe el mismo.
// verificamos el status de la directiva echo (!ini_get('display_errors') ? 'La directiva está desactivada' : 'la directiva está activada');
// cambiando el valor de la directiva en tiempo de ejecución ini_set("display_errors","1");// 1 = On | 0 = Off
Usando error_reporting.
<?php // Deshabilitar todo reporte de errores error_reporting(0); // Errores de ejecucion simples error_reporting(E_ERROR | E_WARNING | E_PARSE); // Reportar E_NOTICE puede ser bueno tambien (para reportar variables // no inicializadas o capturar equivocaciones en nombres de variables ...) error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE); // Reportar todos los errores excepto E_NOTICE // Este es el valor predeterminado en php.ini error_reporting(E_ALL ^ E_NOTICE); // Reportar todos los errores de PHP (el valor de bits 63 puede ser usado en PHP 3) error_reporting(E_ALL); // Lo mismo que error_reporting(E_ALL); ini_set('error_reporting', E_ALL); error_reporting(E_ALL & ~(E_STRICT|E_NOTICE)); ?>
No hay que olvidar los tips de php.net
display_errors es una característica para apoyar su desarrollo y nunca debería usarse es sistemas de producción
Fuentes:
http://www.php.net
- Los comentarios están siendo moderados y serán publicados en la brevedad posible.