Estoy ejecutando una aplicación PHP en Docker y me gustaría depurarla usando XDebug. En mi docker-compose, agregué las siguientes líneas en la parte de phpfpm:
environment: XDEBUG_CONFIG: "remote_enable=1 remote_host=192.168.110.29 remote_port=9000 idekey=PHPSTORM remote_autostart=1" PHP_IDE_CONFIG: "serverName=reports.dev"Configuré PHPStorm de la manera correcta, escuchando en el puerto 9000 y ejecuté la aplicación.
La aplicación funciona perfectamente, pero parece que XDebug no funciona.
Si muevo las líneas de configuración dentro del archivo php.ini, el depurador funciona, excepto por el hecho de que el nombre del servidor está vacío y no puedo depurar (es por eso que intenté seguir la forma de configuración de docker-compose).
Si, dentro del contenedor acoplable, ejecuto echo $XDEBUG_CONFIG, el resultado es correcto, pero parece que XDebug no lee esa variable Env.
Yo tuve el mismo problema. Mi imagen se basó en nimmis/alpine-apache-php7/ . Descubrí que la imagen estaba usando supervisor para iniciar procesos. supervisor no tiene conocimiento de las variables de entorno de Docker.
La convención para decirle al supervisor que se debe ejecutar un proceso es crear un script de run en /etc/sv/{process}/run . Se usó un script como este para iniciar Apache. Necesitaba cambiar el script para que importara las variables de entorno de Docker antes de iniciar Apache.
Los documentos de la imagen base explican la convención para importar el entorno de Docker:
Si necesita variables de entorno desde la línea de comandos de la ventana acoplable (-e,--env=[]) agregue
source /etc/envvarsantes de usarlos en el archivo de script
Así que creé mi propio script de run personalizado para Apache: agregué source /etc/envvars justo antes de la ejecución de httpd .
Sobrescribí el script de run original , agregando una COPY simple a mi Dockerfile :
COPY apache-run.sh /etc/sv/apache2/run Esto aseguró con éxito que mi $XDEBUG_CONFIG fuera visible para httpd en el momento en que se lanzó. Pude confirmar que esto afectó mi configuración de PHP al imprimir phpinfo(); en una página web.
Hiciste un phpinfo(); ? Eso debería indicarle la configuración utilizada.
Tuve el mismo problema... me tomó una eternidad darme cuenta. ¿Está utilizando xdebug.remote_connect_back=1 ? Si es así, elimine esa línea.
Mi proxy nginx estaba reenviando una IP (lo cual era incorrecto) y, por lo tanto, se ignoraba la IP configurada en XDEBUG_CONFIG.
Para mí fue un problema diferente al usar la imagen acoplable PHP-FPM-Alpine oficial ( FROM php:7-fpm-alpine )
Necesitaba agregar XDEBUG-CONFIG a la configuración del grupo fpm: env[XDEBUG_CONFIG] = $XDEBUG_CONFIG
Ver configuración completa https://github.com/attrib/docker-symfony