php - instalar - Inicie XDebug en Netbeans en una solicitud externa
netbeans 8.2 debug php (4)
Estoy usando Netbeans 6.7 y XDebug para depurar un sitio PHP en mi máquina, lanzando la solicitud desde dentro de Netbeans (Proyecto-> Depurar). Esto funciona bien, y es muy útil.
Mi pregunta es: ¿es posible adjuntar el depurador a cualquier solicitud que ingrese, en lugar de a aquellas que ejecuto dentro de Netbeans?
es decir, en lugar de hacer clic en "Depurar", ponga Netbeans en un modo mediante el cual se inicia el depurador y se conecta a la siguiente solicitud que entra.
Tengo la sensación de que esta puede ser una pregunta estúpida, pero si es posible, sería genial.
Editar: un poco más de información
Mi sistema (Ubuntu 9.04) está configurado de la siguiente manera:
Contenido de /etc/php5/conf.d/xdebug.ini
zend_extension=/usr/lib/php5/20060613/xdebug.so
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.idekey=netbeans-xdebug
Las opciones de depuración de Netbeans PHP están en los valores predeterminados:
Debugger Port: 9000
Session ID: netbeans-xdebug
Stop at the First Line: ticked
Mi /etc/hosts
redirige www.mywebsite.com
a localhost
Si hago clic en el botón de depuración en Netbeans, Firefox se inicia con la dirección http://www.mywebsite.com?XDEBUG_SESSION_START=netbeans-xdebug
, y el depurador funciona como se esperaba.
Pero si simplemente navego a http://www.mywebsite.com?XDEBUG_SESSION_START=netbeans-xdebug
, esto no inicia el depurador en Netbeans.
También he intentado configurar xdebug.remote_host=www.mywebsite.com
, pero eso no hace ninguna diferencia.
Además, he habilitado xdebug.remote_log
, y eso muestra información para cuando empiezo desde netbeans, pero nada para solicitudes externas. Así que no creo que XDebug vea las solicitudes externas en absoluto.
No estoy seguro acerca de Netbeans, pero cualquier otro IDE que he usado siempre está a la escucha de una conexión de depuración. Puede iniciar una nueva sesión de depuración desde xdebug agregando la cadena de consulta ?XDEBUG_SESSION_START=name
a la url. Si Netbeans está escuchando, esto debería iniciar una nueva sesión de depuración.
Ver http://xdebug.org/docs/remote#browser_session para más detalles
Por defecto, xdebug no intentará conectarse al host remoto cuando no se haya especificado el argumento ''XDEBUG_SESSION_START'' Cookie / URL. Puede habilitar xdebug para que esté "siempre activo", estableciendo xdebug.remote_autostart en 1 en php.ini.
Además, tendría que iniciar el depurador de PHP en NetBeans para que esto funcione. Todavía no encontré una solución mejor, pero puede hacer que el depurador PHP escuche las conexiones entrantes comenzando a depurar un archivo aleatorio (utilice CTRL + MAYÚS + F5 para comenzar a depurar un archivo) y luego continúe (presionando F5) una vez se detuvo en el punto de ruptura. El depurador Netbeans debería ejecutarse hasta que realmente lo detenga.
Actualización: debido a que NetBeans verifica la identificación de la sesión (XDEBUG_SESSION_START), también debe establecer la variable idekey. p.ej:
xdebug.remote_autostart = 1
xdebug.idekey = "netbeans-xdebug"
Tuve un problema similar (en NetBeans, Mac OSX), después de actualizar PHP y compilar / instalar xdebug. phpinfo mostró xdebug como cargado, pero aun así no se conectó, y después de probar todo lo mencionado anteriormente todavía no tuvo éxito. Luego traté de reducir el número de parámetros establecidos en mi archivo PHP.ini al mínimo requerido. Esto pareció resolver el problema para mí.
; REMOVED (commented) the following
; xdebug.remote_log=/myfile.log
;xdebug.extended_info = off
;xdebug.auto_trace=1
;xdebug.trace_output_dir=/mydir/myphptracefile.txt
;xdebug.trace_output_name=php_trace.%c
;xdebug.collect_params=4
También cambié el nombre de xdebug.idekey por defecto de netbeans-xdebug a los valores predeterminados, y luego de nuevo.
Después de reiniciar Apache, xdebug comenzó a funcionar nuevamente: no estoy seguro de qué fue exactamente lo que lo solucionó, pero un buen punto de partida podría ser comenzar con la cantidad mínima de ajustes de xdebug en su archivo php.ini, luego agregar lentamente más si necesita ellos. Sospecho que puede haber tenido algo que ver con la configuración de rastreo, pero no puedo estar seguro.
La configuración básica que terminé usando fue:
xdebug.remote_enable=on
xdebug.remote_port=9000
xdebug.remote_host=localhost
xdebug.remote_handler=dbgp
xdebug.idekey=netbeans-xdebug
También es una buena idea compilar debugclient (en el paquete fuente xdebug) y verificar la depuración en la línea de comandos, ya que esto le dirá si xdebug puede al menos ejecutarse independientemente de su IDE.
vaya a propiedades del proyecto > ejecutar configuración > avanzada > url de depuración y comprobar no abrir el navegador web (*). no configure el host en el proxy del depurador . guarde estas configuraciones en la ventana del proyecto, en su proyecto: haga clic con el botón derecho del mouse > depuración (esto comienza a escuchar las conexiones de depuración). no se inicia el navegador ingrese http://www.mywebsite.com?XDEBUG_SESSION_START=netbeans-xdebug
en su navegador. debería romperse en netbeans. al menos eso es lo que sucede aquí :)
(*) también podría tener que establecer un mapeo de ruta - para mí, funciona sin