美文网首页vscode
使用vscode调试容器中的php程序

使用vscode调试容器中的php程序

作者: 追梦人在路上不断追寻 | 来源:发表于2023-04-02 21:34 被阅读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

    相关文章

      网友评论

        本文标题:使用vscode调试容器中的php程序

        本文链接:https://www.haomeiwen.com/subject/wrnrddtx.html