博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何使用 vscode 对基于 Docker 的 PHP 进行断点调试
阅读量:7144 次
发布时间:2019-06-29

本文共 2759 字,大约阅读时间需要 9 分钟。

  hot3.png

1. Visual Studio Code

1.1. 安装、设置

    • macOS
    • Linux
    • Windows
  • 推荐配置

    ,只是一些初始设置、美化等,与 PHP 调试无关。

1.2. PHP Debug

  • 安装

    快捷键 cmd + p 或 ctrl + p,输入 ext install php debug

    注意:安装完成后必须重启 vscode。

  • 配置

    打开一个 PHP 项目,点击菜单 Debug > Add Configuration,或按照下图操作

    xdebug

    详细配置如下:

    {    // Use IntelliSense to learn about possible attributes.    // Hover to view descriptions of existing attributes.    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387    "version": "0.2.0",    "configurations": [        {            "name": "Listen for XDebug",            "type": "php",            "request": "launch",            "port": 9001, // 对应 XDebug 的配置            "stopOnEntry": true,            "pathMappings": {                // "容器中对应的项目地址": "本机项目地址"                // 绝对路径                "/var/www/html/test/": "${workspaceRoot}"            }        },        {            "name": "Launch currently open script",            "type": "php",            "request": "launch",            "program": "${file}",            "cwd": "${fileDirname}",            "port": 9001        }    ]}

    配置成功后,在项目下生成一个包含该配置的目录,如下:

    .├── .vscode│   ├── launch.json├── 其它项目文件

2. Docker 下的 PHP 环境

推荐直接克隆我之前封装的一个基于 Docker 的 ,当然你也可用使用你自己的 Docker PHP 环境,但是这里的配置是针对 Nginx + Apache 的组合形式,你可以根据具体环境进行调整。

详细如下:

2.1. 安装、配置 XDebug 扩展

  • 修改 Dockerfile 文件,安装 XDebug

    ...&& mkdir -p /tmp/xdebug \&& wget -c https://github.com/xdebug/xdebug/archive/2.6.0.tar.gz \&& tar -xf 2.6.0.tar.gz -C /tmp/xdebug --strip-components=1 \&& docker-php-ext-configure /tmp/xdebug --enable-xdebug \&& docker-php-ext-install /tmp/xdebug \...

    修改后,需要重新编译对应的镜像文件,更多安装扩展的方式请参考:

  • 配置 XDebug

    在 php.ini 文件追加以下配置

    [XDebug]zend_extension = xdebug.soxdebug.remote_enable = 1xdebug.remote_handler = dbgpxdebug.remote_port = 9001xdebug.remote_autostart = 1xdebug.remote_connect_back = 0xdebug.idekey = dockerxdebug.remote_host = 192.168.2.14

    说明:

    • remote_port 默认 9000,为避免冲突,改为 9001
    • remote_host 是宿主机的 ip 地址

2.2. 调整 Nginx server 配置

server {    listen 80;    server_name my.test; # 这里替换你的域名    index index.html index.htm index.php;    root /usr/share/nginx/html/test;    ...    location ~ .*\.(php|php5)?$ {        proxy_pass http://php_apache:8091; # 这里是对应的 apache 容器地址和端口        proxy_read_timeout 300;        proxy_send_timeout 300;        index index.php;        proxy_set_header Host $host;        proxy_set_header X-Real-IP $remote_addr;    }    ...}

主要追加以下两个参数,用以解决在 debug 时 504 超时问题,具体数值可根据需要设置。

  • proxy_read_timeout
  • proxy_send_timeout

2.3. 暴露 XDebug 通信接口

修改 docker-compose.yml 文件,在 nginx 和 apache 服务下通过 expose 暴露 9001 端口

使用如下命令重新启动服务

docker-compose stopdocker-compose downdocker-compose up -d

3. 测试断点调试

按快捷键 F5 打开断点,此时在浏览器中访问网页,将跳转到 vscode 编辑器,并且样式如下:

PHP断点调试

说明:上图是一个 TP 项目,虽然没有手动设置断点,但是开启调试模式后,访问网页会首先进入根目录下的框架入口文件。

转载于:https://my.oschina.net/antsky/blog/1648698

你可能感兴趣的文章
csharp: Export or Import excel using NPOI
查看>>
一起谈.NET技术,VS 2010 和 .NET 4.0 系列之《多显示器支持》篇
查看>>
“Linaro”将推动开源软件新一波开发潮
查看>>
VS201“.NET研究”0实践RUP4+1架构模型
查看>>
两级导航栏联动效果
查看>>
php ftp类
查看>>
VK Cup 2012 Qualification Round 1 A. Next Round
查看>>
(译)cocos2d精灵教程:第二部分
查看>>
高校女生坐等强女干。保安称压力大。。【转】
查看>>
Python 版 Instance Activator
查看>>
分享30套免费的高质量网页按钮素材
查看>>
亲测SQLServer的最大连接数 (转)
查看>>
typeof 运算符用法
查看>>
SignalR 0.5 发布了
查看>>
批量照片缩小器展示多线程控件BackgroundWorker后台工作使用方法
查看>>
HTML5之Canvas绘图——Canvas画布调整之移动、缩放、旋转
查看>>
排查数据库性能的常用sql语句
查看>>
全排列
查看>>
Node.js&NPM的安装与配置(转)
查看>>
C# CRC16 查表法
查看>>