“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,
...
}