Erreur config Xdebug Docker VSCode

Erreur config Xdebug Docker VSCode - Divers - Programmation

Marsh Posté le 13-08-2024 à 17:02:11    

Bonjour,
J'espère que je suis au bon endroit et je vous remercie par avance pour votre temps.
 
Je suis sous un environnement docker avec séparation des container PHP et Apache.
J'utilise PHP8.2 et Symfony 7.1. j'essaye de rajouter Xdebug afin de pouvoir résoudre un problème de code SF.
Quoi qu'il en soit malgré les nombreux tutos suivit le débugger de VScode ne réagit pas malgré mes points d'arrêts.
 
Voici ma configuration docker:
dockerCompose

Code :
  1. version: '3.9'
  2. networks:
  3.     docker.network:
  4.         driver: bridge
  5. services:
  6.     db:
  7.         image: mysql
  8.         container_name: mysql
  9.         restart: always
  10.         ports:
  11.             - "3306:8080"
  12.         networks:
  13.             - docker.network
  14.         environment:
  15.             MYSQL_ALLOW_EMPTY_PASSWORD: Yes
  16.         volumes:
  17.             - ./db/db_data:/var/lib/mysql
  18.     apache:
  19.         image: httpd
  20.         container_name: apache
  21.         ports:
  22.             - "80:80"
  23.             #- "443:443"
  24.         networks:
  25.             - docker.network
  26.         volumes:
  27.             - ../:/var/www
  28.             - ./apache/httpd-vhosts.conf:/usr/local/apache2/conf/extra/httpd-vhosts.conf
  29.             - ./apache/commun.conf:/usr/local/apache2/conf/extra/commun.conf
  30.             - ./apache/httpd.conf:/usr/local/apache2/conf/httpd.conf
  31.             - ./hosts:/etc/hosts  # Monter le fichier hosts
  32.     php82:
  33.         build: ./php/php8.2
  34.         container_name: php82
  35.         volumes:
  36.            - ../:/var/www
  37.            - ./php/php.ini:/etc/php/8.2/fpm/conf.d/30-custom.ini
  38.            - ./php/php.ini:/etc/php/8.2/cli/conf.d/30-custom.ini
  39.            - ./php/php.ini:/usr/local/etc/php/conf.d/30-custom.ini
  40.            - ./hosts:/etc/hosts  # Monter le fichier hosts
  41.         environment:
  42.             - TZ=Europe/Paris
  43.         ports:
  44.             - "9000:9000"
  45.             - "9004:9004"
  46.         restart: always
  47.         networks:
  48.             - docker.network
  49.         extra_hosts:
  50.             - host.docker.internal:host-gateway
  51.     phpmyadmin:
  52.         image: phpmyadmin
  53.         container_name: phpmyadmin
  54.         ports:
  55.             - "86:80"
  56.         networks:
  57.             - docker.network
  58.     mailer:
  59.         image: mailhog/mailhog
  60.         container_name: mailer
  61.         ports:
  62.             - "1025:1025"
  63.             - "8025:8025"
  64.         networks:
  65.             - docker.network


 
DockerFile

Code :
  1. # From
  2. FROM phpdockerio/php:8.2-fpm
  3. ARG DEBIAN_FRONTEND=noninteractive
  4. # Run
  5. RUN apt-get update
  6. # Install Nano
  7. RUN apt-get install -y nano
  8. RUN apt-get install -y php8.2-mysqli
  9. # Install necessary packages for pecl and ODBC
  10. RUN apt-get update && apt-get install -y \
  11.     php-pear \
  12.     php8.2-dev \
  13.     gcc \
  14.     g++ \
  15.     make \
  16.     autoconf \
  17.     libc-dev \
  18.     pkg-config \
  19.     unixodbc-dev \
  20.     libxml2-dev \
  21.     php-xml
  22. RUN apt-get install -y \
  23.     libpng-dev \
  24.     libjpeg-dev \
  25.     libfreetype6-dev \
  26.     libzip-dev \
  27.     zip \
  28.     && pecl install gd \
  29.     && docker-php-ext-enable gd \
  30.     && pecl install mysqli \
  31.     && docker-php-ext-enable mysqli \
  32.     && pecl install pdo \
  33.     && docker-php-ext-enable pdo \
  34.     && pecl install pdo_mysql \
  35.     && docker-php-ext-enable pdo_mysql \
  36.     && pecl install zip \
  37.     && docker-php-ext-enable zip \
  38.     && apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*
  39.  
  40. # Install SQL Server extensions
  41. RUN pecl config-set php_ini /etc/php/8.2/fpm/php.ini \
  42.     && pecl install sqlsrv \
  43.     && pecl install pdo_sqlsrv \
  44.     && printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/8.2/mods-available/sqlsrv.ini \
  45.     && printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/8.2/mods-available/pdo_sqlsrv.ini \
  46.     && phpenmod -v 8.2 sqlsrv pdo_sqlsrv
  47.      
  48. # Install necessary packages for MS ODBC Driver
  49. RUN apt-get update && apt-get install -y \
  50.     curl \
  51.     apt-transport-https \
  52.     gnupg
  53.  
  54. # Add Microsoft's repo for the latest ODBC driver for SQL Server
  55. RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
  56. RUN curl https://packages.microsoft.com/conf [...] /prod.list > /etc/apt/sources.list.d/mssql-release.list
  57.  
  58. # Install the MS ODBC driver for SQL Server
  59. RUN apt-get update && ACCEPT_EULA=Y apt-get install -y \
  60.     msodbcsql17 \
  61.     mssql-tools
  62.  
  63. # Ensure the PHP configuration directory exists
  64. RUN mkdir -p /usr/local/etc/php/conf.d
  65.  
  66. # Install Xdebug
  67. RUN pecl install xdebug  
  68.  
  69. # Configure Xdebug
  70. RUN echo "zend_extension=$(find /usr/lib/php/ -name xdebug.so)" > /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
  71.     && echo "xdebug.mode=debug" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
  72.     && echo "xdebug.start_with_request=yes" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
  73.     && echo "xdebug.client_host=host.docker.internal" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
  74.     && echo "xdebug.client_port=9000" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
  75.     && echo "xdebug.log=/var/log/xdebug.log" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
  76.  
  77. # Créer le répertoire de travail
  78. RUN mkdir -p /var/www
  79.  
  80. # Automatiser les permissions du répertoire
  81. RUN chown -R www-data:www-data /var/www \
  82.     && chmod -R 755 /var/www


 
30-custom.ini

Code :
  1. display_errors = On
  2. display_startup_errors = On
  3. log_errors = On
  4. error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
  5. directorypermissions = "0775"
  6. date.timezone = Europe/Paris
  7. max_execution_time = 500
  8. max_input_time = 500
  9. memory_limit = 256M
  10. ; zend_extension=/usr/lib/php/20220829/xdebug.so
  11. ; xdebug.mode=debug
  12. ; xdebug.start_with_request=yes
  13. ; xdebug.client_host=172.0.0.1
  14. ; xdebug.client_port=9004
  15. zend_extension=/usr/lib/php/20220829/xdebug.so
  16. ; ; zend_extension=xdebug.so
  17. xdebug.mode=debug
  18. xdebug.idekey=XDEBUG_SESSION_START
  19. xdebug.start_with_request=yes
  20. xdebug.log=/dev/stdout
  21. xdebug.log_level=0
  22. xdebug.client_port=9000
  23. xdebug.client_host=host.docker.internal
  24. xdebug.discover_client_host=true
  25. xdebug.remote_host=host.docker.internal


 
j'ai fait un php_info() ou j'ai bien l'instanciation de Xdebug
[img][/img]
 
J'ai ensuite configuré mon VSCode avec l'extension php debug, et le paramétrage du débugger. Voici mon fichier lunch.json

Code :
  1. {
  2.     "version": "0.2.0",
  3.     "configurations": [
  4.         {
  5.             "name": "Listen for Xdebug",
  6.             "type": "php",
  7.             "request": "launch",
  8.             "port": 9000,
  9.             "hostname": "127.0.0.1",
  10.             "pathMappings": {
  11.                 "/var/www": "${workspaceFolder}"
  12.             }
  13.         }
  14.     ]
  15. }


 
J'ai testé soit avec POSTMAN soit en appelant directement l'url http://datalookup.local/index.php/lookup/liste-marques
Pour les navigateurs, j'ai rajouté l'extension debbug helper, qui est activée. Malheureusement, absolument, rien ne se passe dans VSCode.
J'ai testé avec un autre port 9004, que j'ai ouvert sur le container docker, mais rien.
 
Je ne sais plus trop où donner de la tête. Pouvez-vous m'aider ?
Avez-vous besoin d'information complémentaire ?


---------------
Je vous remercie par avance pour vos lumières
Reply

Marsh Posté le 13-08-2024 à 17:02:11   

Reply

Marsh Posté le 21-08-2024 à 11:01:40    

Bonjour,  
J'ai fini par trouver.
 
J'ai supprimé la déclaration du port dans le dockerFile et le php.ini.
Et j'ai mis le port par défaut dans le lunch.json soit 9003, et pour mon docker-compose j'ai uniquement laissé le port pour mon code soit 9000.
 
Ensuite, j'avais un souci de point d'arrêt qui n'était pas reconnu ou attrapé, j'ai donc changé le pathMappings pour cibler non pas la racine de mon dossier de dev, mais mon projet directement.
 
30-custom.ini  

Code :
  1. zend_extension=xdebug.so
  2. xdebug.mode=develop,debug
  3. xdebug.start_with_request=yes
  4. xdebug.log_level=10
  5. xdebug.log=/var/log/xdebug.log
  6. xdebug.discover_client_host=0
  7. xdebug.client_host=host.docker.internal


 
lunch.json

Code :
  1. {
  2.     "version": "0.2.0",
  3.     "configurations": [
  4.         {
  5.             "name": "Listen for Xdebug",
  6.             "type": "php",
  7.             "request": "launch",
  8.             "port": 9003,
  9.             "pathMappings": {
  10.                 "/var/www/api-global": "c:/Users/gnicolle/Sites/api-global"
  11.             }
  12.         }
  13.     ]
  14. }


Message édité par cimeon le 21-08-2024 à 11:03:43

---------------
Je vous remercie par avance pour vos lumières
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed