with remote enable debug php intellij-idea docker xdebug remote-debugging

remote - xdebug en phpstorm



La depuraciĆ³n remota con XDebug desde dentro de un contenedor Docker no funciona (3)

Para mí, en un entorno de PHP, NGINX Docker usando sublime, lo conseguí para trabajar con estas configuraciones:

xdebug.remote_enable = 1 xdebug.remote_mode = req xdebug.remote_port = 9001 xdebug.remote_connect_back=0 xdebug.remote_host=host.docker.internal

El que me llevó una eternidad en resolverlo fue establecer el host remoto_host para host.docker.internal.

Estoy intentando configurar un entorno AMP acoplado y no puedo hacer que el depurador remoto funcione. Mi configuración es la siguiente:

Tengo un contenedor de base de datos ejecutando mysql que funciona como un encanto. Construí una imagen de Docker ''phpmysqli'' con el siguiente Dockerfile

FROM php:apache RUN docker-php-ext-install mysqli mbstring # zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so RUN pecl install xdebug RUN echo ''zend_extension = /usr/local/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so'' >> /usr/local/etc/php/php.ini RUN touch /usr/local/etc/php/conf.d/xdebug.ini; / echo xdebug.remote_enable=1 >> /usr/local/etc/php/conf.d/xdebug.ini; / echo xdebug.remote_autostart=0 >> /usr/local/etc/php/conf.d/xdebug.ini; / echo xdebug.remote_connect_back=1 >> /usr/local/etc/php/conf.d/xdebug.ini; / echo xdebug.remote_port=9000 >> /usr/local/etc/php/conf.d/xdebug.ini; / echo xdebug.remote_log=/tmp/php5-xdebug.log >> /usr/local/etc/php/conf.d/xdebug.ini; RUN echo ''date.timezone = Europe/Berlin'' > /usr/local/etc/php/conf.d/date.ini

Yo lo llamo

docker run --rm -ti --name web -p 127.0.0.1:8080:80 -v /path/to/projects:/var/www/html --link db:db phpmysqli

Después de esto, phpinfo, respectivamente, php -i muestra que xdebug 2.3.2 está funcionando.

A continuación, configuro un servidor dentro de IntelliJ IDEA llamado ''Docker'' con Host 127.0.0.1 , Port 8080 y Debugger Xdebug. Configuré la asignación de ruta análoga a la asignación de volumen en la declaración de ejecución de la ventana acoplable.

En la configuración de depuración de PHP-> verifiqué que uso el puerto 9000 para las conexiones entrantes, que aceptaré conexiones externas y que no ignoraré las conexiones de los servidores no registrados.

Después de esto, también creé una nueva configuración de depuración remota de PHP llamada Docker. El servidor es Docker, el ID de sesión es XDEBUG_IDEA .

Puedo llamar a archivos PHP en el contenedor, puedo conectarme a la base de datos a través del enlace ... pero por alguna razón no ocurre nada cuando intento iniciar una sesión de depuración. Intenté usar una cookie (y sí, configuré XDEBUG_IDEA como id de sesión en xdebug helper). Intenté enviar XDEBUG_SESSION_START=XDEBUG_IDEA como GET ...

¿Pueden las personas inteligentes por ahí decirme lo que me perdí?


Puedes probar con esta configuración. php-apache build proporciona dos métodos para compilar y habilitar el módulo php. Es mejor usar docker-php-ext-enable xdebug para establecer la configuración de archivo correcta.

FROM php:5.4-apache # Enable and configure xdebug RUN pecl install xdebug RUN docker-php-ext-enable xdebug RUN sed -i ''1 a xdebug.remote_autostart=true'' /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini RUN sed -i ''1 a xdebug.remote_mode=req'' /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini RUN sed -i ''1 a xdebug.remote_handler=dbgp'' /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini RUN sed -i ''1 a xdebug.remote_connect_back=1 '' /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini RUN sed -i ''1 a xdebug.remote_port=9000'' /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini RUN sed -i ''1 a xdebug.remote_host=127.0.0.1'' /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini RUN sed -i ''1 a xdebug.remote_enable=1'' /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini


close: xdebug.remote_connect_back=0 add: xdebug.remote_host=192.168.0.102[your docker host/machine IP]