J'essaie de configurer un environnement AMP docké et je ne parviens pas à faire fonctionner le débogueur distant. Ma configuration est la suivante:
J'ai un conteneur de base de données qui exécute MySQL qui fonctionne comme un charme. J'ai construit une image Docker 'phpmysqli' avec le fichier Docker suivant
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
J'appelle
docker run --rm -ti --name web -p 127.0.0.1:8080:80 -v /path/to/projects:/var/www/html --link db:db phpmysqli
Après ce phpinfo, respectivement php -i montre que xdebug 2.3.2 est opérationnel.
Ensuite, je configure un serveur dans IntelliJ IDEA appelé "Docker" avec l'hôte 127.0.0.1
, le port 8080
et le débogueur Xdebug. J'ai configuré le mappage de chemin analogue au mappage de volume dans l'instruction d'exécution du menu fixe.
Dans les paramètres PHP-> Debug, j'ai vérifié que j'utilisais le port 9000
pour les connexions entrantes, que j'accepterais les connexions externes et que je n'ignorerais pas les connexions de serveurs non enregistrés.
Après cela, j'ai également créé une nouvelle configuration de débogage à distance PHP appelée Docker. Le serveur est Docker, l'identifiant de session est XDEBUG_IDEA
.
Je peux appeler des fichiers PHP sur le conteneur, je peux me connecter à la base de données via le lien ... mais pour une raison quelconque, rien ne se produit lorsque je tente de démarrer une session de débogage. J'ai essayé d'utiliser un cookie (et oui, j'ai défini XDEBUG_IDEA
comme identifiant de session dans xdebug helper). J'ai essayé d'envoyer XDEBUG_SESSION_START=XDEBUG_IDEA
comme GET
...
Pouvez-vous des gens intelligents me dire ce que j'ai manqué?
Vous pouvez essayer avec cette configuration. La compilation php-Apache fournit deux méthodes pour compiler et activer le module php . Il est préférable d'utiliser docker-php-ext-enable xdebug
pour définir la configuration de fichier correcte.
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
fermer: xdebug.remote_connect_back=0
ajouter: xdebug.remote_Host=192.168.0.102[your docker Host/machine IP]
Pour moi sur un environnement PHP, NGINX Docker utilisant sublime, je l’ai obtenu avec les paramètres suivants:
xdebug.remote_enable = 1
xdebug.remote_mode = req
xdebug.remote_port = 9001
xdebug.remote_connect_back=0
xdebug.remote_Host=host.docker.internal
Celui qui m'a pris pour toujours était de définir le remote_Host à Host.docker.internal.