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