Xdebug para servidor remoto sin conexión


Quiero que un equipo que use diferentes computadoras pueda depurar PHP en un servidor remoto, pero estoy teniendo dificultades para que Xdebug funcione en NetBeans 7.0.1. He intentado muchos consejos en línea, pero en vano.

Para el registro, he instalado con éxito Xdebug localmente en una máquina Windows 7 que ejecuta WampServer. Así que puedo depurar PHP con puntos de interrupción en NetBeans, siempre que establezca la propiedad Project Properties->Run Configuration - >Run As a Sitio Web local. Sin embargo, como se indicó anteriormente, mi objetivo es depurar en NetBeans en un Sitio Web remoto .

Mi servidor es una máquina Ubuntu 11.04. He utilizado la salida de http://www.xdebug.org/find-binary.php para poner el binario apropiado en la máquina. He modificado todos los archivos php.ini que pude encontrar (tanto en los directorios php5/apache2 y php5/cli) para incluir estas líneas:

zend_extension="/usr/lib/php5/20090626+lfs/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000

Si compruebo la página web phpinfo.php, dice:

This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
    with Xdebug v2.1.2, Copyright (c) 2002-2011, by Derick Rethans

Así que Xdebug parece para ser instalado correctamente. Aún así, cuando intento depurar en NetBeans, recibo el mensaje de la barra de estado interminable Esperando la Conexión (netbeans-xdebug). Cuando presiono el botón stop obtengo No se detectó ninguna conexión de xdebug en X segundos. La razón podría ser que xdebug no está instalado o no está configurado correctamente .

Tal vez estoy confundiendo la configuración local con la configuración del servidor aquí? Un post dijo xdebug.remote_host debe establecerse en la IP de la máquina en ejecución NetBeans , pero quiero que un equipo pueda depurar usando máquinas con diferentes direcciones IP. Un problema podría ser el puerto 9000, pero he comprobado que no está bloqueado.

Cualquier ayuda que pudiera aclarar esto sería apreciada!

Author: Community, 2011-11-08

7 answers

El servidor que ejecuta PHP (y XDebug) debe poder conectarse a su estación de trabajo/escritorio.

Diagrama

Por lo que necesitará configurar el servidor en consecuencia, ya sea diciéndole que se conecte a una dirección IP específica (xdebug.remote_host) o que se "conecte de nuevo" automáticamente (xdebug.remote_connect_back). Esto último tiene algunas implicaciones de seguridad, sin embargo. Estos se describen en el manual.

 45
Author: Linus Kleen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-16 16:36:07

La directiva clave es la siguiente:

xdebug.remote_connect_back = On

Esto permite que el servidor web se conecte a cualquier computadora que esté pidiendo una sesión de depuración. De esta manera, no tiene que codificar una dirección IP y puede compartir Xdebug. Esta directiva no estaba presente en versiones anteriores y a menudo se omite en tutoriales y documentación.

También debe verificar que cada equipo cliente acepte conexiones entrantes al puerto 9000 (xdebug.remote_port). Esto incluye configurar el firewall y crear seguro de que el cliente del depurador está funcionando

 14
Author: Álvaro González,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-14 13:04:00

Para mí, xdebug.remote_connect_back = On no funciona. Lo que hice fue establecer el reenvío de puertos ssh en mi máquina cliente.

Configuración de Xdebug en la máquina remota:

xdebug.remote_enable=1
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_autostart=1
xdebug.remote_handler = dbgp
xdebug.remote_mode = req

Puertos de reenvío en el equipo cliente:

ssh -g -N -lusername -R9000:127.0.0.1:9000 [remote.host.ip]

Se debe permitir el acceso de shell en la máquina remota.

 11
Author: medium8,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-03 12:32:56

En mi caso, esos comandos me ayudaron:

xdebug.remote_enable = On
xdebug.remote_autostart=1

Aviso: el depurador funcionará incluso si la variable GET/POST/COOKIE no está presente debido a 'xdebug.remote_autostart=1 '

 4
Author: Asaf Hananel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-06 14:14:13

¿Qué extensión de página está activando para iniciar la depuración? Recuerdo que me volví loco y pasé noches sin dormir donde todos los ajustes con XDebug van muy bien. El problema era que no estaba empezando con .PHP en lugar de empezar con .HTML.

Si lo está, intente iniciar su depuración con el archivo .PHP.

 0
Author: Abdul Munim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-11-08 12:08:23

Necesitará establecer:

xdebug.remote_host=192.168.1.104

192.168.1.104 es la ip del cliente, donde trabaja con el IDE

 0
Author: beto.bateria,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-27 14:20:17

Gracias por xdebug.remote_connect_back = On en php del lado del servidor.ini
También tuve que usar este plugin para Chrome para poder iniciar la sesión de depuración en PhpStorm

 0
Author: Dmitry Davydov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-22 15:01:21