使用vscode调试容器中的php程序
2023-04-02 本文已影响0人
追梦人在路上不断追寻
首先推荐安装vscode的php扩展包,这里推荐phptools这个扩展,它包含了从调试,测试,到格式化,自动补全一些列功能。
xdebug
xdebug 是一个php的扩展,它可以帮助我们调试php,我们可以在初始化php容器的时候,直接安装它。
xdebug这里需要注意的是xdebug的版本,主要是2和3的版本,不同版本的xdebug配置会有一些不同。
Dockerfiles
首先我们需要创建php容器的Dockerfile文件,文件内容如下:
FROM php:fpm
RUN pecl install xdebug
RUN docker-php-ext-enable xdebug
nginx
这里我们使用nginx作为服务器,它的Dockerfile文件如下:
FROM nginx:alpine
COPY nginx/default.conf /etc/nginx/conf.d
nginx 默认的default.conf 内容:
server {
listen 0.0.0.0:80;
root /var/www/html;
location / {
index index.php index.html;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
}
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
}
docker-compose
接下来我们创建一个docker-compose.yml来管理php和nginx两个容器。
version: "3"
services:
nginx:
build:
context: .
dockerfile: nginx/Dockerfile
ports:
- "8080:80"
networks:
- internal
volumes:
- ./data/:/var/www/html
php:
build:
context: .
dockerfile: php/Dockerfile
networks:
- internal
environment:
XDEBUG_MODE: debug
XDEBUG_CONFIG: client_host=host.docker.internal client_port=9003
volumes:
- ./data/:/var/www/html
networks:
internal:
driver: bridge
在这里,我们通过environment来配置php的参数,配置xdebug相关信息。
image.png最后
启动docker-compose ,访问localhost:8080 可以访问php首页。
在vscode中创建一个launch.json配置文件,用来配置调试信息。
vscode launch配置信息如下:
{
"name": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 9003,
"pathMappings": {
"/var/www/html": "${workspaceFolder}/data"
},
image.png
通过listen for xdebug启动监听,在浏览器中访问 http://localhost:8080?XDEBUG_SESSION_START=1
就可以监听到调试,其中XDEBUG_SESSION_START参数是用来告诉告诉xdebug调试这个请求。(貌似不加这个参数也可以)