Archivo de la etiqueta: xdebug

Configurar visualización resultados Xdebug

A la hora de depurar en PHP una de las opciones que mas uso es el var_dump, el cual me da un volcado en pantalla de la variable que le pasamos. Esta función, usada sin Xdebug nos devuelve un volcado en texto plano el cual es un poco dificil de interpretar, aunque siempre podemos usarla en combinación con las etiquetas pre. Si tenemos activado el Xdebug, no hace falta ponerlo entre las etiquetas pre ya que la salida viene formateada.

Tomemos el siguiente ejemplo:


$variables = array(
 'uno' => array(
 'blanco' => array(
   'arriba' => array(
     'hola'
    ),
   'abajo' => array(
     'adios'
    )
   )
 )
);

var_dump($variables);

Si ejecutamos el var_dump sin tener Xdebug habilitado nos mostrara lo siguiente:

Captura de pantalla 2014-03-23 a la(s) 20.47.08Si lo ejecutamos con Xdebug habilitado

Captura de pantalla 2014-03-23 a la(s) 20.48.25Si veis, los valores de la tercera array anidada no se muestran, esto es debido a que los niveles de profundidad del Xdebug están establecidos como máximo a 3. Esto podemos modificarlo para que muestre los niveles de profundidad que nos interesen con estableciendo la variable xdebug.var_display_max_depth. En este ejemplo voy a establecer el nivel de profundidad a 4. El máximo valor que podemos establecer es 1023, y si no queremos poner limite la establecemos a -1. Para que esto funcione lo mas rápido es establecer su valor por medio del ini_set al principio del script.


ini_set('xdebug.var_display_max_depth', 4);

Ahora la visualización sera así

Captura de pantalla 2014-03-23 a la(s) 20.53.39

http://www.xdebug.com/docs/display

Anuncios

PHP en Mac OS X 10.9 Mavericks – Mac OS X Tips

Mac OS X MavericksYa ha pasado mas de una semana desde la llegada del nuevo Mac OS X Mavericks, y tengo que decir que me esta gustando bastante, a parte de ser gratuito, funciona muy bien.

Una de mis “sorpresas” ha sido comprobar que la configuración que tenia para el desarrollo de PHP ha desaparecido, y he tenido que remontarlo todo, pero vamos no me ha supuesto mucho tiempo.

Cambio en la versión de PHP.

En Mac OS 10.8, creo recordar que la versión que tenia instalada era la 5.3.14, estoy hablando un poco de memoria, pero seguro que era la 5.3, en esta nueva versión tenemos de serie la 5.4.17, si queréis comprobarlo solo tenéis que abrir una terminal y escribir php -v

¿Donde esta mi PEAR?

Así es, como suena, todo mi directorio con las librerías PEAR ha desaparecido, también decir que lo tenia dentro del sistema y no en proyecto así que esto puede llegar a ser comprensible,  pero si abrimos un terminal y vamos al directorio  /usr/lib/php nos encontraremos un ejecutable llamado install-pear-nozlib.phar se nos instalara PEAR, no olvidar instalarlo como root.


sudo install-pear-nozlib-phar

¿Yo tenia el XDebug instalado, no?

Si cambiamos el PHP cambiamos las extensiones, así que si teníamos instalado por ejemplo el XDebug pues ya yo esta, así que toca reinstalarlo. Lo mas sencillo, el metodo PECL, pero antes de ejecutarlo es mejor que instaléis las “command line development tools’ ya que si no lo hacéis, casi seguro que os saldrá el siguiente error.


fatal error: 'php.h' file not found
#include <php.h>
         ^

Instalar command line development tools


sudo xcode-select --install

Una vez instalado ya podemos instalar el Xdebug


sudo pecl install xdebug

Una vez instalado tenemos que agregar la linea “zend_extension=xdebug.so” a nuestro php.ini, esto lo veremos  en el siguiente apartado, pero si agregamos esa linea como nos dicen nos dará error, la linea que tenemos que agregar para que nos funcione es la siguiente


zend_extension = "/usr/lib/php/extensions/no-debug-non-zts-20100525"

¿Donde esta el php.ini?

La respuesta a esta pregunta es sencilla, de serie no esta como tal, esta como php.ini.default, al cual tenemos que cambiarle el nombre a php.ini o crear un enlace simbólico a este, para que la configuración se nos aplique. Este fichero podemos encontrarlo en el directorio /etc, y es un fichero de solo lectura, así que si queremos modificar algo o bien le cambiamos los permisos a escritura mientras lo editamos, o si usamos el vi o vim, los cuales tengo que decir que para estas cosas de configuraciones yo los uso siempre, guardamos los cambios con wq!.

Cosas que agregar al php.ini

En el fichero no están definidos los path de búsqueda, así que buscar donde dice include_path y agregar, los directorios que queremos incluir. Por ejemplo, si tenemos instalado PEAR querremos incluir en el path el directorio de PEAR.


include_path = ".:/usr/lib/php/pear"

Si usais el vi/vim una manera muy sencilla de llegar hasta esta linea es hacer lo siguiente una vez abierto el fichero:

Pulsamos ESC a continuación escribimos /include_path y pulsamos ENTER, y así nos va hasta la linea donde pone include_path.

Si la linea empieza con ; quitarlo ya que sino continuara siendo un comentario.

En el ejemplo anterior de la extensión de Xdebug, una manera muy sencilla de agregar la linea, como esta se puede poner al final del fichero podemos hacer lo siguiente:


sudo echo zend_extension = "/usr/lib/php/extensions/no-debug-non-zts-20100525" >> /etc/php.ini

Zend Server con soporte Xdebug en Linux – PHP Tips

Cuando se trata de depurar nuestras aplicaciones con PHP, están como dos opciones principales ZendDebugger y XDebug. Dependiendo del IDE que utilicemos, y del servidor que tengamos utilizaremos una u otra. Por ejemplo si usamos Zend Studio y Zend Server, la opción clara es Zend Debugger, pero si usamos como IDE Netbeans, este no tiene soporte para Zend Debugger, solo para XDebug.

De primeras casi recomendaría olvidarnos de instalar los dos depuradores a la vez, ya que lo normal es que den problemas, así que hay que decidirse por uno u otro.

Si tenemos Zend Server y queremos habilitar Xdebug, hay que deshabilitar Zend Debugger. Para instalarlo y ponerlo en marcha hay que hacer lo siguiente:

En el servidor

Otra de las ‘particularidades’ de Zend Server es que los binarios PHP los ubica en su propio directorio de trabajo y otro problema suele ser tener varios binarios PHP en nuestros servidor,  para comprobar que binarios estamos usando utilizaremos la herramienta which


which php

/usr/local/zend/bin/php

Si nos sale el resultado de antes quiere decir que estamos usando el PHP que viene con Zend Server, si sale /usr/bin/php, igual estamos probando otro.

Otra cosa que podemos comprobar en caso que nos devuelva la ruta /usr/bin/php es ir a ese directorio y hacer un ls -lh ph* para ver si el binario php es un enlace a /usr/local/zend/bin/php y  si phpize apunta al directorio de zend.

Otra opción, mas sencilla es ir al directorio /usr/local/zend/bin y ejecutar el comando con ./ asi se ejecutara ese comando y no el del path.

Asi instalariamos el xdebug:


sudo pecl install xdebug

Una vez instalado necesitamos comentar una linea en el archivo de configuracion debugger.ini que esta en /usr/local/zend/etc/conf.d/debugger.ini y agregar otra

;zend_extension_manager.dir.debugger=/usr/local/zend/lib/debugger

zend_extension=/usr/local/zend/lib/php_extensions/xdebug.so

Esta linea esta situada la ultima, para comentarla simplemente agregamos un ; delante
Una vez hecho esto reiniciamos el servidor y comprobamos en el phpinfo o ejecutando php -i | grep xdebug si el xdebug esta cargado.

Esta entrada esta basada en la entrada Zend Server with Xdebug support on Linux | My Science Is Better.

Enhanced by Zemanta