not mac installed debugger debug configurar php apache2 xdebug remote-debugging phpstorm

mac - xdebug phpstorm



DepuraciĆ³n remota de PHP: XDebug no se puede conectar al cliente de JetBrains php Storm (3)

Me gustaría que la depuración remota funcione con la siguiente configuración de software:

Win 7 Pro 64bit WAMP Server 2.2 (32 bits) incl. Apache 2.2.22, PHP 5.4.3, XDebug php_xdebug-2.2.1-5.4-vc9.dll JetBrains PHPStorm 4.0.3

1.) WAMP está en funcionamiento, mi sitio se puede encontrar en localhost / fox /

2.) PHP Storm tiene un proyecto donde hay una asignación entre mis archivos de origen y el alias de apache localhost / fox

2.) Instalé la extensión de php XDebug y agregué las siguientes líneas a mi php.ini

[xdebug] zend_extension="c:/wamp/bin/php/php5.4.3/zend_ext/php_xdebug-2.2.1-5.4-vc9.dll" xdebug.remote_enable=On xdebug.remote_host="localhost" xdebug.remote_port=9000 xdebug.remote_connect_back=On xdebug.remote_autostart=On xdebug.profiler_enable=On xdebug.profiler_enable_trigger=off xdebug.profiler_output_name=cachegrind.out.%t.%p xdebug.profiler_output_dir="c:/wamp/tmp" xdebug.remote_log="C:/wamp/tmp/xdebug.log" xdebug.remote_cookie_expire_time=6000

Esto debería configurar el XDebug de depuración remota y la dirección de devolución de llamada.

Ya comprobé mi instalación aquí: xdebug.org/wizard.php

3.) Configuré phpstorm, primero agregué el servidor local

y luego revisé mi configuración aquí

http://www.bilder-hochladen.net/files/jrn0-2-c81e-jpg-nb.html

(Intenté 127.0.0.1/fox como dirección del servidor también, y localhost en su lugar)

Haga clic en mi configuración de depuración: http://www.bilder-hochladen.net/files/jrn0-1-c4ca-jpg.html

Ahora reinicio mi apache, entro en phpstorm, establezco un punto de interrupción (es rojo), hago clic en la función

Run -> Start listen to PHP Debug Connections

El receptor del teléfono se está poniendo verde, lo que sea que eso pueda significar exactamente, pero es una señal positiva para mí.

Cuando ahora ejecuto mi script php en el servidor web local absolutamente no pasa nada, el programa se ejecuta en el punto de interrupción y no se detiene.

En el registro de Xdebuggers (C: /wamp/tmp/xdebug.log) encuentro muchos de estos mensajes como estos:

I: Checking remote connect back address. I: Remote address found, connecting to ::1:9000. E: Could not connect to client. :-( Log closed at 2012-07-19 14:21:08

En algún lugar de Internet encontré la sugerencia de que el cortafuegos de Windows podía bloquear la comunicación, así que lo apagué completamente, pero eso no ayudó.

También intenté conectarme a través de telnet a localhost: 9000 y obtuve una respuesta de phpstorm.

¿Alguien tiene una idea de dónde buscar el error o qué otra cosa podría intentar para que esto funcione?

Muchas gracias por tu ayuda, Michael.

ps Disculpe, no tengo permiso para publicar más de dos enlaces porque soy nuevo aquí, por lo que no hay hipervínculo al asistente de xdebug.


¿Dónde está exactamente tu punto de interrupción en tu código? Sé que XDebug puede ser divertido.

Para PHP 5.4, tu configuración de Xdebug debería ser

[XDebug] zend_extension="<path to php_xdebug.dll>" xdebug.remote_enable=1 xdebug.remote_port="<the port for XDebug to listen to>" (the default port is 9000) xdebug.profiler_enable=1 xdebug.profiler_output_dir="<AMP home/tmp>"

http://www.jetbrains.com/phpstorm/webhelp/configuring-xdebug.html


Puede intentar desactivar IPV6 http://support.microsoft.com/kb/929852 , creo que este es el problema cuando intenta conectarse.

Dirección remota encontrada, conectando a :: 1: 9000.

El sistema intenta conectarse con IPV6 y creo que XDebug solo habilita IPV4.


Tal vez un poco tarde pero ...

Aquí tienes una contradicción en tu configuración:

xdebug.remote_host="localhost" xdebug.remote_connect_back=On

Esos dos ajustes se superponen. Cual es tu caso

a) Desea depurar su aplicación solo desde un único origen (por ejemplo, está desarrollando e implementando en localhost ).

Entonces ya casi ha terminado: ya ha definido que el host remoto es localhost . Comente la línea remote_connect_back (con ; )

b) Desea aceptar múltiples fuentes de desarrollo (por ejemplo, varias máquinas que depuran la aplicación en la misma red).

Entonces, la línea remote_host se anulará, por lo que puede eliminarla o comentarla.

Esta es efectivamente la configuración que está ejecutando actualmente. Entonces, ¿qué hay de malo en ello? Compruébelo ejecutando este script:

<? echo $_SERVER[''REMOTE_ADDR''];

La salida será ::1 . Bueno, el host que realiza la solicitud a su servidor Apache es localhost . Y Apache está resolviendo ese nombre como la dirección IPv6 ::1 , que al final no está mal. Pero Xdebug no puede conectarse a una dirección IPv6. Ver:

I: Remote address found, connecting to ::1:9000. E: Could not connect to client. :-(

Por lo tanto, nuestro objetivo será hacer que Apache resuelva localhost preferiblemente a una dirección IPv4 (sin deshabilitar ningún soporte para IPv6 a nivel del sistema operativo ni a nivel de Apache). Esto se puede lograr agregando a su archivo hosts la siguiente línea:

127.0.0.1 localhost

Este simple truco hará el truco! Ahora, localhost siempre se resolverá preferentemente como una dirección IPv4, mientras que ::1 seguirá siendo perfectamente comprensible.