vscode

使用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调试这个请求。(貌似不加这个参数也可以)

image.png
上一篇下一篇

猜你喜欢

热点阅读