vscode compose php docker phpstorm xdebug boot2docker

vscode - phpstorm xdebug docker-compose



¿Cómo puedo depurar mi contenedor docker con phpStorm? (3)

Encontré una solución más automatizada En mi ENTRYPOINT ejecuté el script startServices

#!/bin/bash HOST_IP=`/sbin/ip route | awk ''/default/ { print $3 }''` head -n -1 /etc/php5/mods-available/xdebug.ini > /etc/php5/mods-available/xdebug.tmp echo "xdebug.remote_host="$HOST_IP >> /etc/php5/mods-available/xdebug.tmp rm /etc/php5/mods-available/xdebug.ini mv /etc/php5/mods-available/xdebug.tmp /etc/php5/mods-available/xdebug.ini /usr/bin/supervisord

Toma la dirección IP actual de la máquina host y reemplaza la línea en xdebug.ini, luego la ejecución de la bruja supervisora ​​está comenzando todo

Mi inicial xdebug.ini

zend_extension=xdebug.so [xdebug] ; priority=999 xdebug.remote_autostart=true xdebug.remote_enable = On xdebug.remote_connect_back = Off xdebug.remote_port = 9000 xdebug.remote_handler=dbgp xdebug.remote_mode=req xdebug.var_display_max_data = 2048 xdebug.var_display_max_depth = 128 xdebug.max_nesting_level = 500 xdebug.remote_host=127.0.0.1

Después de ejecutar el script, obtendré algo como esto

zend_extension=xdebug.so [xdebug] ; priority=999 xdebug.remote_autostart=true xdebug.remote_enable = On xdebug.remote_connect_back = Off xdebug.remote_port = 9000 xdebug.remote_handler=dbgp xdebug.remote_mode=req xdebug.var_display_max_data = 2048 xdebug.var_display_max_depth = 128 xdebug.max_nesting_level = 500 xdebug.remote_host=172.17.0.1

Donde 172.17.0.1 es mi host actual ip

Bajo la siguiente dirección IP, mi contenedor se ejecuta correctamente en mi navegador web

http://192.168.99.100:32775

También he creado un volumen para compartir archivos entre mi contenedor y mi sistema de archivos

docker run --name lampf -d -p 32775:80 -v /Users/sja/Sites/lamkepf2:/var/www/html --link=lampf_db:db codinglimo/apache_php540_gs_imgmck_pdflib9

Ahora instalo xDebug correctamente en mi contenedor con el siguiente xdebug.ini

zend_extension="/usr/local/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so" xdebug.remote_enable=on xdebug.remote_host=127.0.0.1 xdebug.remote_port=9000 xdebug.remote_handler=dbgp xdebug.profiler_enable=0 xdebug.profiler_output_dir="/temp/profiledir"

PHPStorm también está configurado

http://img2.picload.org/image/iowdpww/xdebug.png

Pero mis puntos de ruptura en mi index.php se ignoran? Cual es mi error

El problema es resolver con la ayuda de Sergey

Mi nuevo xdebug.ini

zend_extension="/usr/local/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so" xdebug.remote_enable=on #xdebug.remote_host=127.0.0.1 xdebug.remote_port=9000 xdebug.remote_connect_back=On xdebug.remote_handler=dbgp xdebug.profiler_enable=0 xdebug.profiler_output_dir="/temp/profiledir"


Funcionó para mí simplemente ejecutando dentro del contenedor:

pecl install -o -f xdebug / && rm -rf /tmp/pear / && echo "zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so" > /usr/local/etc/php/conf.d/xdebug.ini / && echo "xdebug.remote_enable=on" >> /usr/local/etc/php/conf.d/xdebug.ini / && echo "xdebug.remote_host=172.17.42.1" >> /usr/local/etc/php/conf.d/xdebug.ini / && echo "xdebug.remote_connect_back=On" >> /usr/local/etc/php/conf.d/xdebug.ini / && echo "memory_limit = 64M" > /usr/local/etc/php/conf.d/php.ini

Y luego, reiniciando el contenedor.

172.17.42.1 es la IP predeterminada del host, cuando se ejecuta Docker. Puede obtener la IP de su host ejecutando en el contenedor:

/sbin/ip route|awk ''/default/ { print $3 }''


Su contenedor Docker no puede ver su IDE de PHP Storm con la IP 127.0.0.1, por lo general, el host es 172.17.42.1 desde un contenedor. También remote_connect_back no funcionará bien, probablemente. Intenta configurarlo de esta manera:

xdebug.remote_host=172.17.42.1 xdebug.remote_connect_back=Off

Es posible que deba buscar una forma adecuada de conocer la IP del host dentro de su contenedor, 172.17.42.1 es el valor predeterminado, pero no siempre es así.