JuangaCovas.info

La página personal de Juan Gabriel Covas

Herramientas de usuario

Herramientas del sitio


linux:howtos:nusphere-dbg

NuSphere PHPEd: Cómo instalar el debugger para remote debugging

Estas instrucciones (viejas) nos permiten hacer remote debugging sobre el entorno local de eltiempo.es a través de dbg, el módulo de debugging para PHP del autor del IDE para Windows NuSphere PhpED.


Instalar el módulo DBG bajo el PHP de Ubuntu

Primero averiguamos la version del php en nuestro Ubuntu para saber qué modulo instalar (5.2, 5.3, etc):

$ php -v
  • En la carpeta windows donde esté instalado el NuSphere en Windows, normalmente C:\Program Files (x86)\NuSphere\PhpED\
  • Nos vamos al subdirectorio: debugger\server y abrimos el archivo: dbg-x.x.x-Linux.tar.gz

Cómo averiguar la carpeta del tar.gz que debemos usar:

x86\
x86_64\
x86_TS\
x86_64_TS\

Determinar si nuestro Ubuntu es x86 o x86_64 (32 o 64 bits) y si es _TS (Thread Safe):

$ getconf LONG_BIT
32

Determinar si php tiene activado o desactivado el “Thread Safety” (TS). Usando phpinfo() o php -i buscamos la cadena Thread Safety: si sale disabled es NO-TS, enabled sería TS…

Una manera rápida desde línea de comandos:

$ php -i -c ~/eltiempo/local_regress/etc/php5/cgi/ | grep "Thread Safety"

Thread Safety => disabled

Normalmente está disabled, por tanto del directorio x86 ó x86_64 a secas, trincamos el módulo dbg adecuado según la versión de PHP.

Copiamos el dbg-php-5.3.so (ejemplo para PHP 5.3) del tar.gz al dir. /home/myuser

Ahora averiguamos dónde huevos van las librerías de PHP en la instalación de Ubuntu:

$ whereis php5
php5: /usr/bin/php5 /etc/php5 /usr/lib/php5 /usr/bin/X11/php5 /usr/include/php5 /usr/share/php5 /usr/share/man/man1/php5.1.gz

$ cd /usr/lib/php5

$ find -name *.so
./20090626/memcache.so
./20090626/imagick.so
./20090626/mcrypt.so
./20090626/mysql.so
./20090626/gd.so
./20090626/pdo_mysql.so
./20090626/pdo.so
./20090626/mysqli.so
./20090626/imap.so
./20090626/curl.so
./20090626/http.so

Con este ejemplo vemos que los módulos van dentro del dir. 20090626, dentro de /usr/lib/php5 así que:

Colocamos el módulo del PhpEd en la carpeta de modulos del PHP5:

$ sudo mv ~/dbg-php-5.3.so /usr/lib/php5/20090626/

Le establecemos los permisos adecuados:

$ cd 20090626
$ sudo chown root:root dbg-php-5.3.so
$ sudo chmod 644 dbg-php-5.3.so

Modificamos el archivo php.ini.tpl del proyecto, que es la plantilla que luego el comando make li convertirá en php.ini a secas:

$ nano ~/eltiempo/etc/php5/cgi/php.ini.tpl

Buscamos la linea que pone “; extension_dir directive above.”, y justo debajo añadimos…

zend_extension="/usr/lib/php5/20090626/dbg-php-5.3.so"
[debugger]
debugger.hosts_allow=192.168.0.* 192.168.1.* 127.0.0.1 localhost
debugger.hosts_deny=ALL
debugger.ports=7869

Indicamos en hosts_allow las IPs que deben estar autorizadas a debuggear.

También deberíamos buscar cualquier referencia a xdebug (otro debugger) en el tpl.ini y comentarlas prefijando las líneas con ; (punto y coma), para no tener dos módulos de debugging ahí en el PHP…

Ya está, guardamos.

Para regenerar el php.ini, regeneramos todo el proyecto:

$ make li lstart

Comprobamos que PHP está cargando correctamente el módulo al iniciarse, pidiéndole al PHP por línea de comandos que use el php.ini del directorio local_regress, ejecutando lo siguiente:


$ /usr/bin/php -v -c ~/eltiempo/local_regress/etc/php5/cgi/php.ini

PHP 5.3.6-13ubuntu3.6 with Suhosin-Patch (cli) (built: Feb 11 2012 02:17:16)
Copyright (c) 1997-2011 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies
    with DBG v4.x.x, (C) 2000,2012, by Dmitri Dmitrienko
    

Deberíamos ver la línea final que empieza por with DBG v4.x.x. Si no la vemos es que la hemos liado con la version del módulo (32/64 bits, version PHP, etc), o no estamos ejecutando realmente el PHP que usará nuestro proyecto local de eltiempo.es.

Ahora solo nos queda mapear correctamente el proyecto en el IDE NuSphere bajo Windows para empezar a gozar…


Mapeo correcto del proyecto en el NuSphere PhpED

Necesitamos tener creada una unidad de red en Windows para acceder al directorio raíz del Ubuntu desde Windows.
Ver el documento Compartir Ubuntu por red con Windows.

Suponiendo que ya tenemos creada la unidad de red R: que corresponde al directorio raíz de Ubuntu:

En el IDE del NuSphere PhpED:

Vamos a project ⇒ properties:

Pestaña: Project:

Root directory: R:\home\myuser\eltiempo
Run mode: HTTP mode (3rd party WEB server)

Pestaña: Mapping:

Remote directoryLocal directoryURLPublishing directory
/home/myuser/eltiempo/local_regress/opt/eltiempo/phpR:\home\myuser\eltiempo\opt\eltiempo\phphttp://local.eltiempo.es:50008
/home/myuser/eltiempo/local_regress/opt/eltiempo/php/application/cacheR:\home\myuser\eltiempo\local_regress\opt\eltiempo\php\application\cache
/home/myuser/eltiempo/local_regress/opt/common/php/CodeIgniter_1.5.4R:\home\myuser\eltiempo\local_regress\opt\common\php\CodeIgniter_1.5.4
/home/myuser/eltiempo/local_regress/opt/common/includeR:\home\myuser\eltiempo\opt\common\include
/home/myuser/eltiempo/local_regress/opt/common/php/Smarty-2.6.18R:\home\myuser\eltiempo\local_regress\opt\common\php\Smarty-2.6.18
R:\home\myuser\eltiempo

Notar cómo la última fila debe contener sólo R:\home\myuser\eltiempo en Local directory y nada más. Así debe ser y es el truco para un mapeo correcto con una unidad de red en el NuSphere PhpED.

UPDATE para NuSphere v10:

En project properties, dentro de Run & Debug : Run Mode ha cambiado el aspecto, pero los datos vienen a ser los mismos:

Remote directoryLocal directoryURL
P:\home\myuser\eltiempo
/home/juanga/eltiempo/local_regress/opt/eltiempo/phpP:\home\juanga\eltiempo\opt\eltiempo\phphttp://local.eltiempo.es:50008
etc…
linux/howtos/nusphere-dbg.txt · Última modificación: 10/07/2020 17:38 por Juanga Covas