php - info - xdebug instructions
Depuración de la conexión de puerto de IDE a XDebug: "Esperando para conectarse" (3)
Bueno, mi configuración de desarrollo difiere algo de la tuya, pero conozco muy bien este problema. De hecho, solo lo resolví ... esta vez mi Fireeall bloqueó el puerto que usa XDebug para hablar con mi IDE.
Algunas cosas vienen a mi mente al leer su cuenta:
1) "No puedo explicar qué causa el problema o cuándo se manifiesta el problema ". Esta es una afirmación muy importante, como todos sabemos, las soluciones técnicas dependen estrictamente de si el problema subyacente ocurre siempre o, a veces, de manera aparentemente aleatoria. Entonces ... ¿a veces puedes realizar XDebugging de esta manera o nunca?
2) Cuando su IDE está esperando y su navegador representa el sitio de inmediato, entonces supongo que hay algo mal con su IDE diciéndole a su XDebug-server que comience. B / c si XDebug se iniciara y no pudiera conectarse de nuevo con su XDebug-client, entonces el sitio web no se procesaría de inmediato. Pero en su caso, los parámetros GET simplemente se ignoran porque no tienen ningún significado para su servidor Apache / PHP, ya que no saben nada acerca de alguna sesión XDebug que le gustaría iniciar.
3) Los enfoques de tu solución me parecen muy complicados. Me mantendría lo más simple posible primero y vería cómo funciona eso. Por ejemplo, "xdebug.idekey =" netbeans-xdebug "generalmente no es necesario para una primera configuración.
Esos son mis dos centavos
Mejor Raffael
Preámbulo
Al igual que muchos, he pasado más horas depurando la conexión de mi IDE a XDebug que utilizando XDebug para depurar mis programas. He conseguido que funcione en varias ocasiones , pero de vez en cuando aparece el problema común de "Esperando conectar" . No he podido localizar qué causa que XDebug funcione o falle. He estado usando ubuntu durante dos años; No soy ni un novato ni un guru strace. ¿Qué estoy haciendo mal? ¿Cómo puedo depurar mejor la conexión de mi IDE a XDebug?
Preparar
- Ubuntu 10.10
- Netbeans 6.9.1
- PHP 5.3.3-1ubuntu9 con Suhosin-Patch
- Xdebug v2.1.0 con debugclient construido el 20 de septiembre de 2010 desde la fuente utilizando el script de instrucciones de instalación a medida en xdebug.org
- Apache Apache / 2.2.16
- Ambos /etc/php5/apache2/php.ini y /etc/php5/cli/php.ini tienen:
zend_extension = /usr/lib/php5/20090626+lfs/xdebug.so xdebug.remote_enable=1 xdebug.remote_handler=dbgp xdebug.remote_mode=req xdebug.remote_host=127.0.0.1 xdebug.remote_port=9000 xdebug.remote_log=/var/log/xdebug.log xdebug.extended_info=1 xdebug.idekey="netbeans-xdebug"
Procedimiento
El problema
No puedo explicar qué causa el problema o cuándo se manifiesta el problema. Comienza cuando intento depurar mi proyecto, lo que hace que mi navegador dev de elección (Chrome) se abra en la url de mi proyecto con el parámetro XDEBUG_SESSION_START=netbeans-xdebug
. Esto hace que la página se muestre normalmente en cromo, mientras que Netbeans solo informa "Esperando para conectar".
Depurando XDebug
En primer lugar, con el mensaje "Waiting to Connect" (Esperando conexión) todavía con vida, intentaré usar netstat para explorar el puerto 9000, que es más o menos así :
$ netstat -an | grep 9000
tcp6 0 0 :::9000 :::* LISTEN
Apagué mi IDE e intento usar dos archivos para ayudarme a descubrir qué está sucediendo: {webroot}/index.php
contiene <?php phpinfo(); ?>
<?php phpinfo(); ?>
y {webroot}/dbgtest.php
contiene el script de verificación de instalación de XDebug :
<?php
$address = ''127.0.0.1'';
$port = 9000;
$sock = socket_create(AF_INET, SOCK_STREAM, 0);
socket_bind($sock, $address, $port) or die(''Unable to bind'');
socket_listen($sock);
$client = socket_accept($sock);
echo "connection established: $client";
socket_close($client);
socket_close($sock);
?>
Cuando inicio el debugclient de debugclient
y abro http://127.0.0.1/dbgtest.php?XDEBUG_SESSION_START=mysession
, normalmente obtendré el resultado regular y luego verifico que XDebug está conectado al script con netstat en otro terminal:
$ netstat -an | grep 9000
tcp 0 0 127.0.0.1:9000 127.0.0.1:34831 ESTABLISHED
tcp 0 0 127.0.0.1:34831 127.0.0.1:9000 ESTABLISHED
Aunque ambos parecen indicar que se ha realizado la conexión, la página web dice "No se puede enlazar", lo que no puedo explicar. I Ctrl-c para salir de debugclient, y netstat en este punto verifica que el puerto 9000 no tenga actividad. {webroot}/index.php
Netbeans, abra {webroot}/index.php
y active el depurador, que abre http://127.0.0.1/index.php
. El depurador generalmente comienza normalmente. Detengo el depurador, vuelvo a mi proyecto, y aquí es donde el problema realmente se vuelve molesto: algunas veces, puedo continuar depurando mi proyecto como siempre, y otras veces, el problema vuelve a aparecer y mientras "Esperando a El signo de Connect "se muestra, netstat muestra:
$ netstat -an | grep 9000
tcp6 0 0 :::9000 :::* LISTEN
tcp6 0 0 127.0.0.1:9000 127.0.0.1:34681 TIME_WAIT
Otras veces, reiniciaré mi computadora, encenderé una terminal y encontraré:
$ netstat -an | grep 9000
unix 3 [ ] STREAM CONNECTED 9000
$ telnet 127.0.0.1 9000
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused
No estoy lo suficientemente familiarizado con la red y Linux interno para ver lo que esto apunta. Claramente, algo está usando el puerto 9000. ¿Qué significa esto? Tenga en cuenta que a pesar de mi configuración en php.ini:
$ cat /var/log/xdebug.log
cat: /var/log/xdebug.log: No such file or directory
¿Cuál es la forma correcta de depurar la conexión entre el IDE y XDebug?
Por favor, lea este hilo.
http://forums.netbeans.org/post-99369.html
al final, la solución fue agregar net.ipv6.bindv6only = 0 al archivo /etc/sysctl.d/bindv6only.conf y luego reiniciar. Xdebug funcionó bien después de eso.
Si por casualidad utiliza el cliente Cisco VPN, esto podría ser una causa. Viene con un firewall, que está siempre activado, incluso si el cliente no se inicia. Se puede desmarcar en el menú de Opciones.