Utilizar FirePHP desde PHP

  • Por
  • PHP
Cómo utilizar el código PHP de FirePHP para mostrar mensajes de debug, que podremos visualizar en la consola de Firebug.
En este nuevo artículo vamos a mostrar paso a paso cómo tenemos que hacer para usar FirePHP en nuestras aplicaciones y facilitarnos las tareas de depuración de errores en PHP. Aprenderemos a mostrar algunos mensajes de log, sobre variables normales y sobre arrays. Además veremos cómo podemos ejecutar una instrucción para que los mensajes de debug no aparezcan en la consola, útil para aplicaciones en producción.

Este artículo forma parte de una serie de artículos en los que estamos explicando el uso de FirePHP que deberías haber leído en el Manual de FirePHP.

Cómo utilizar la clase de FirePHP para mostrar mensajes de debug

Ahora que tenemos FirePHP instalado en nuestro Firefox y tenemos los archivos PHP para poder lanzar mensajes a la consola, podemos ver un sencillo script para ver de qué manera trabajar con estos sistemas.

Lo que vamos a hacer es un archivo PHP que, al verlo en Firefox, nos mostrará unos mensajes en la consola de Firebug. Será simple para que todo el mundo lo pueda entender:

A) Incluir el archivo de PHP con el código de FirePHP.

require_once('../FirePHPCore/FirePHP.class.php');

B) Ejecutar la función PHP ob_start(); para que la salida de PHP se almacene en un buffer, hasta que se complete la página. Esto nos permitirá crear mensajes para la consola en cualquier momento del código PHP. Recordar que los mensajes de FirePHP viajan en las cabeceras del HTTP y si no se hace uso del buffer puede que ocurra que las cabeceras se hayan enviado, junto con el contenido HTML de la página, y que nuestros mensajes no se visualicen.

ob_start();

Nota: si la directiva de PHP.ini output_buffering está activada, no necesitaríamos hacer el ob_start().

C) Instanciar un objeto de la clase FirePHP, que utilizaremos para enviar mensajes a la consola, por medio de sus métodos.

$mifirePHP = FirePHP::getInstance(true);

D) Enviar mensajes de log a la consola. Ahora puedes crear variables PHP y mostrar sus contenidos de la siguiente manera:

$mivariable=2;
$mifirePHP->log($mivariable, "Mensaje");

Con este otro código se crearía un Array y se mostraría luego su contenido:

$miArray = array("indice" => "valor", "otra cosa" => "otro valor");
$mifirePHP->log($miArray, "Este es el contenido del Array miArray");

El resultado de mostrar esos valores aparecerá, como se decía, en la consola de Firebug. Pero ten en cuenta que tienes que habilitar las funcionalidades de "Consola" y "Red" dentro de Firebug. Ahora, dejo una imagen de los resultados de mostrar el contenido de esas variables en la consola:

Opcionalmente: Evitar que los mensajes aparezcan en la consola.

Si estamos programando en nuestro sitio de desarrollo, no habrá problemas en que enviemos ciertas informaciones sensibles por la cabecera del HTTP hacia la consola de FirePHP. No obstante, como decíamos anteriormente en el manual de FirePHP, en sitios web en producción debemos cuidar que no se envíe por la cabecera ninguna información sensible, que pueda afectar a la seguridad de tus aplicaciones web o a la privacidad de los usurarios que te visitan.

Si estamos programando con las clases (de programación orientada a objetos) de FirePHP, existe un único método para conseguir esto. En concreto el método se llama setEnabled() y tenemos que enviar como parámetro el valor false.

$mifirePHP->setEnabled(false);

Con esta sencilla instrucción conseguiremos que, a partir del momento de ejecutarla, no se muestren mensajes en la consola. Podemos ponerla a continuación de la instanciación del objeto FirePHP para que no se muestre ningún mensaje en la página. Incluso podemos vincular esa instrucción a una comprobación sobre si un usuario administrador ha hecho login, o algo parecido, que evitaría que los visitantes generales vieran mensajes, pero permitiría a los administradores recibirlos y poder depurar aplicaciones también en servidores de producción.

Código completo de página PHP que utiliza FirePHP

El script PHP completo de las pruebas de FirePHP que hemos realizado en este artículo es el siguiente:

<?php
require_once('../FirePHPCore/FirePHP.class.php');
ob_start();

//instanciar un objeto de la clase FirePHP
$mifirePHP = FirePHP::getInstance(true);
//evito que se muestren los mensajes en la consola de firebug
//$mifirePHP->setEnabled(false);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
   <title>Untitled</title>
</head>

<body>
Puedo hacer lo que quiera en la página

<?php
//puedo hacer lo que quiera tb en PHP...

$mivariable=2;
$mivariable*=389;
$mifirePHP->log($mivariable, "Mensaje");

$miArray = array("indice" => "valor", "otra cosa" => "otro valor");
$mifirePHP->log($miArray, "Este es el contenido del Array miArray");
?>

</body>
</html>

Autor

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir

Comentarios

Elfowan

18/6/2009
Sera Util, Pero no me funciona.
Creo que le articulo esta muy interesante, y la idea de utilizar el fireBug para ver el comportamiento de variables en Php, puede ser de gran ayuda para programar. Pero he de decir que no me funciona el firePhp, y los mensajes que envio con log se imprimen en la pagina html sin más, creo que hay algo que me falla y no se que es, he segido todas las instrucciones y nada de nada. Espero que alguien de luz a mi ignorancia. Gracias

Elfowan

18/6/2009
Ya di con la tecla
Bueno en fin no me funcionaba por lo tipico un error tonto, mi servidor local de php no acepta la etiqueta corta <? de apertura para php. Bueno pues creo que es bastante útil, así se evitaran poner tantos print para mostrar los valores de las variables, que pueden ser bastante engorrosos a la hora de ver el resultado final, además con
//$mifirePHP->setEnabled(false); puedes desactivar para que aparezca en el fireBug. Y despues cuando todo funciona tan solo habria que buscar la variable que declaremos como instancia de firePHP y borrar las lineas donde aparezca, o simplemente dejarlas según creamos conveniente.
Gracias por el Tutorial, me a ser de gran ayuda el firePHP.

Osmair

07/7/2009
Unico exemplo bom.
Esse exemplo é muito bom consegui fazer rodar aqui, recomendo

Jorge Sánchez

08/7/2009
FireBug y FirePHP
Me parece fantástico esto. Tengo mucho tiempo desarrollando y una de las mayores dificultades al evolucionar hacia los servicios web era que no era fácil depurar... Con javascript tocaba meter alert(); cada dos instrucciones para saber donde iba y que estaba pasando, hasta que encontre el javascript debugger (proyecto venkman), pero no veia nada del código php... ahora con esta herramienta todo se facilita... estoy apenas empezando a probarla pero veo que todo funciona hasta ahora... de modo que los invito a probarla y a aportar a su desarrollo... mil gracias!

manuel_tuti

10/7/2009
No me salen los mensages de FirePHP en la consola FireBug
Hola.
Gracias por el excelente tutorial.

El problema que tengo es que no me sale ningun mensage en la consola de las variables PHP. Tengo los complementos correctamente instalados, en la consola me sale todo tipo de mensajes excepto los del entorno php, en las opciones sale 'FirePHP enabled'. Puse las librerias de comunicación y tu código ejemplo en una página mia, se que se esta comunicando bien con mi página porque se ejecutan correctamente, ya que despues de esto mi código tb se ejecuta (y si no pilla bien el FirePHP.class, provocando error, y el código siguiente no se ejecuta).

El proposito de poner el Debug no era para mirar variables, pero saber porque una funcion que estoy llamando provoca error (error de sintaxe o lo que sea, se que provoca error porque el código que viene despues ya no se ejecuta), con try... catch tampoco me lo indica (queria una Debug similar al del visual studio .net, que te dice porque una funcion no funciona al ser llamada, etc).

Muchas gracias.

Cazapata

09/10/2009
No me funciona
Hola, segui el manual, pero no me funciona. :(

Li0n

17/11/2009
No me muestra nada en la consola
Hola, estoy como loco intentando hacer que me funcione, pero no doy con la tecla.
Firebug (versión 1.4.5) me funciona perfectamente, tengo instalado firephp, y sé que el servidor funciona porque desde los equipos de mis compañeros funciona perfectamente. Sin embargo en mi equipo no muestra nada en la consola, y la verdad es que ninguno sabemos por qué, ¿alguna idea?
Gracias de antemano, un saludo.

Li0n

17/11/2009
SOLUCIONADO
Después de varios días dejándolo de lado y volviendo a ello cada poco tiempo, justo cuando uno pide ayuda a la desesperada descubre lo que le pasaba :)
Por si a alguien más le ayuda: el firephp sale habilitado (enabled) por defecto, lo he desactivado y activado de nuevo y se quejaba porque me decía que tengo que tener activa la consola y la red de firebug (en inglés), y era justamente eso: la consola estaba activada (obviamente) pero no la pestaña de red, al activarla funciona perfectamente.
Si alguien no encuentra esto (que no va a dar problemas porque está ahí) se lo indico sin problemas :)
Un saludo.

Enrique

04/3/2010
algo no va como debe, pero no encuentro el fallo en el ejemplo prueba
lo que me sale en pantalla es:
Parse error: parse error in C:wampwwwpruebasprobandofirephp.php on line 2

André Paiva

20/7/2014
FirePHP
Very very good.
Thank you.