debugger configurar chrome php xdebug phpstorm

configurar - xdebug php 7.3 1



PhpStorm+Xdebug=página no cargando (4)

Lo primero es lo primero, ten un poco de información xdebug:

Xdebug installed: 2.2.0rc1 Server API: Apache 2.4 Handler Apache Lounge Windows: yes - Compiler: MS VC9 - Architecture: x86 Zend Server: no PHP Version: 5.4.0 Zend API nr: 220100525 PHP API nr: 20100525 Debug Build: no Thread Safe Build: yes Configuration File Path: C:/Windows Configuration File: C:/Uniserver/UniServer/usr/local/php/php.ini Extensions directory: C:/Uniserver/UniServer/usr/local/php/extensions You''re already running the latest Xdebug version

Todo se ve bien. Así es como se ve mi php.ini:

[Xdebug] zend_extension=C:/Uniserver/UniServer/usr/local/php/extensions/php_xdebug-2.2.0RC1-5.4-vc9.dll xdebug.remote_host=localhost xdebug.remote_port=9123 xdebug.idekey=PHPSTORM xdebug.remote_mode=req xdebug.remote_handler=dbgp xdebug.remote_enable=1 xdebug.remote_connect_back=0 xdebug.remote_autostart=0 xdebug.remote_log="C:/Uniserver/UniServer/usr/local/php/extensions/tmp/log.log" xdebug.overload_var_dump=1 xdebug.trace_format=0 xdebug.show_exception_trace=0 xdebug.default_enable=0

Ahora, voy a tratar de depurar con PhpStorm. Primero voy a Configuración-> PHP-> Servidores y añado esto:

Name: localhost Host: localhost Port: 8080 Debugger: Xdebug

(Sí, mi sitio web se está ejecutando en el puerto 8080, de lo contrario, tengo conflictos con el otro software que estoy usando). Luego, creo una nueva configuración Ejecutar / Depurar:

PHP Remote Debug Name: local Servers: localhost Ide key(session id): PHPSTORM

También creo un marcador de inicio / parada de depuración con esta herramienta: http://www.jetbrains.com/phpstorm/marklets/index.html

Ok, todo parece estar listo, así que presioné el botón Debug en PhpStorm.

La página de inicio de mi proyecto se encuentra en http://localhost:8080/Project/page/Home.php , así que http://localhost:8080/Project/page/Home.php allí. La página se carga. Presiono el botón de inicio en mi barra de marcadores, recargo y la página se queda en blanco ...

Cuando agrego un punto de interrupción en el archivo home.php en mi proyecto y vuelvo a cargar, ¡el punto de interrupción se ve afectado! Puedo pasar, entrar, ... Se muestran todos los valores ... Esto funciona sin ningún problema. Pero cuando repasé todos los puntos de interrupción, o presioné Reanudar programa, y ​​devolví el navegador, la página está completamente en blanco. El código HTML se ve así:

<html><head><style type="text/css"></style></head><body></body></html>

Que esta pasando? ¿Por qué la página que estoy depurando no está siendo renderizada? El paso sobre el código funciona, todo el php y html se está ejecutando, pero al final no se muestra nada en mi navegador. Planeo usar el Xdebugger en una función que se encuentra en un archivo /Project/class/Account.php, pero no puedo llegar sin presionar un botón en mi página de inicio.

¿Por qué no usar un proxy Xdebug que dices? ¿Podría eso resolver algo? Bueno, cada vez que intento configurar uno, obtengo este error:

Proxy Xdebug: no se puede conectar al proxy xdebug en ''localhost: 9123''

Aunque mi configuración de proxy Xdebug es correcta:

IDE key: PHPSTORM Host: localhost Port: 9123

¿Alguien puede decirme qué está pasando? Realmente necesito este depurador porque hay una cierta función que no funcionará correctamente por alguna razón y me está volviendo loco. Necesito verificar qué variables se están pasando y qué les está pasando.

EDITAR

Información adicional: cuando termine de revisar todo el código, mi depurador dice:

Waiting for incoming connection with ide key ''PHPSTORM''

¿Podría ser esta la razón por la que mi página no se está cargando?

EDITAR EDITAR

Ok, en lugar de presionar el botón de depuración, también puedo comenzar a escuchar las conexiones de depuración de PHP. ¡Esto funciona también! Mis puntos de interrupción están afectados, puedo entrar en ... Pero el mismo problema persiste: mi página web permanece en blanco y mi depurador dice "Desconectado" al final. El problema persiste en cualquier navegador.

EDITAR EDITAR EDITAR

Descubrí otra cosa que es muy extraña al depurar ... Puedo ingresar mi código muy bien hasta que llegue a la función que obtiene mi instancia de base de datos. La clase de base de datos se ve así:

class Database { private static $instance = null; private static $conn; private function __construct() { try { self::$conn = new mysqli(''localhost'', ''root'', ''root'', ''database'', ''3308''); } catch (Exception $ex) { $errorpager = new CustomPageGenerator(); $errorpager->generateErrorPage("Connection to database failed. Please try again later."); } } public static function getInstance() { try { if (self::$instance == null) { self::$instance = new Database(); } return self::$instance; } catch (Exception $ex) { $errorpager = new CustomPageGenerator(); $errorpager->generateErrorPage("Connection to database failed. Please try again later."); return false; } } public function query($sql) { try { return self::$conn->query($sql); } catch (Exception $ex) { $errorpager = new CustomPageGenerator(); $errorpager->generateErrorPage("Connection to database failed. Please try again later."); return false; } } }

Tengo la sensación de que mi clase de base de datos podría tener algo que ver con este problema ... Cada vez que golpeo la función getInstance (), la depuración se detiene abruptamente y aparece el error net :: ERR_CONNECTION_RESET en Google Chrome. ¿Podría ser éste el problema?


A partir de lo que describe, funciona la depuración remota de xdebug.

Es difícil decir por qué ese HTML se devuelve al navegador (y no a lo que esperas). ¿Has intentado usar una versión estable de xdebug?


El problema está solucionado en Xdebug 2.2.0RC2. Por favor actualice


En mi caso, fue porque xdebug estaba escuchando solo en un puerto ipv6 y el navegador intentó conectarse a través de ipv4 (localhost).

No estoy seguro de qué depende si el servidor de depuración se enlaza a un puerto ipv4 o ipv6. En mi caso, es con Ubuntu 12.04 y php del repositorio predeterminado de Ubuntu.

Puede comprobar si tiene el mismo problema ejecutando

sudo netstat -tulpen

mientras phpstorm está esperando una conexión. Busque una entrada para el puerto 9000 (o lo que haya configurado). En mi caso, la salida contiene la línea.

tcp6 0 0 :::9000 :::* LISTEN 1000 6687897 318/java

Es posible resolver esto cambiando la configuración del kernel, pero la solución que tomé fue simplemente conectarme a este puerto ipv6: en la configuración de ejecución / depuración de phpstorm utilizada para ese proyecto, en la configuración del servidor cambié el host de "localhost" a "ip6-localhost ". En Ubuntu, esa es la contraparte ipv6 (:: 1) de localhost (127.0.0.1), configurada por defecto en / etc / hosts. Una vez más, no estoy seguro de que eso también se aplique a otros sistemas operativos.


  • Symfony 2
  • PhpStorm 4.0.1

He actualizado a php_xdebug-2.2.1-5.4-vc9.dll y esto resolvió el problema