DCA php

“Config php for debugging…”

php5.6

Para configurar o ambiente para o php5.6, precisamos configurar 2 arquivos:

  • Dockerfile
  • launch.json

Dockerfile

FROM php:5.6-apache

EXPOSE 80
EXPOSE 9000

# Habilitando o modo de reescrita do Apache
RUN a2enmod rewrite

RUN pecl install xdebug-2.5.3 \
    && docker-php-ext-enable xdebug

# Configure xDebug
RUN echo "\
xdebug.remote_enable=1\n\
xdebug.remote_handler=dbgp\n\
xdebug.remote_port=9000\n\
xdebug.remote_autostart=1\n\
xdebug.remote_log=/tmp/xdebug.lo\n\
xdebug.remote_connect_back=0\n\
xdebug.remote_host=docker.for.mac.localhost\n\
xdebug.max_nesting_level=1500\
">> /usr/local/etc/php/conf.d/xdebug.ini

launch.json

Esse arquivo é a configuração do VSCode para conseguir conectar remotamente no contêiner.

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9000,
            "log" : true,
            "stopOnEntry": true,
            "pathMappings": {
                "/var/www/html": "${workspaceFolder}/src"
            }
        },
        {
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 9000
        }
    ]
}

php7.2 && php8.0

Para configurar o ambiente para o php7.2 ou 8.0, precisamos configurar 3 arquivos:

  • Dockerfile
  • launch.json
  • docker-compose.yaml

Docker file

FROM php:7.2-apache

EXPOSE 80
EXPOSE 9003

# Habilitando o modo de reescrita do Apache
RUN a2enmod rewrite

RUN pecl install xdebug && docker-php-ext-enable xdebug

# Configure xDebug
RUN echo '[xdebug]\n\
zend_extension=xdebug\n\
xdebug.mode=off\n\
xdebug.start_with_request = yes\n\
xdebug.client_host = "host.docker.internal"\n\
xdebug.idekey="VSCODE"\n\
xdebug.log=/tmp/xdebug_remote.log\n\
' >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini

docker-compose.yaml

  extra_hosts:
    - "host.docker.internal:host-gateway"
  environment:
    - XDEBUG_MODE=develop,debug

launch.json

Nesse caso é a configuração é praticamente a mesma, exceto pelo fato da porta padrão dessa versão do xdebug ser a 9003. Então a única config que muda é a seguinte:

{
  ...
  "port": 9003,
  ...
}

Referências