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]