# docker中安装xdebug(干货)

Xdebug 是一个开放源代码的 PHP 程序调试器(即一个Debug工具),可以用来跟踪,调试和分析PHP程序的运行状况

# 安装环境

演示环境ubuntu,开发工具vscode

# 1.安装xdebug扩展

进入php容器,执行sudo pecl install xdebug

# 2.修改php配置文件php.ini,加载xdebug模块

zend_extension=xdebug.so//可能需要根据xdebug扩展安装的实际位置替换
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_port=9001
xdebug.remote_autostart=1
xdebug.remote_connect_back=0
xdebug.idekey=docker
xdebug.remote_host=主机ip
1
2
3
4
5
6
7
8

# 3.vscode调试配置

1.添加扩展引用 vscode中打开搜索扩展,然后搜索PHP Debug,然后安装

2.配置launch.json文件

{
  // 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,
      "log": true,
      "pathMappings": {
        "/srv/blog": "${workspaceRoot}/blog", //实际项目路径和docker中路径对应关系
      }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# debug不通怎么排查?

实际遇到了问题怎么也debug不了,下面是我一步一步解决的办法

1.php.ini中xdebug添加日志(通过xdebug给出的log,定位出详细的错误信息)

xdebug.remote_log = /tmp/xdebug.log
1
[36] Log opened at 2020-04-09 08:26:54
[36] I: Connecting to configured address/port: 192.167.22.69:9001.
[36] E: Time-out connecting to client (Waited: 200 ms). :-(
[36] Log closed at 2020-04-09 08:26:54
1
2
3
4

2.分析xdebug.log文件。连接超时 a,首先看容器是否能ping到这个ip(docker中默认没有ping,所以需要自己安装apt-get update,apt-get nstall inetutils-ping)
ping 192.167.22.69
测试通过

b,然后就是端口问题拉。有防火墙需要关闭9001端口

sudo ufw allow 9001
1

接着搞定

3.vscode中开启debug是,日志输出也是关键,有肯能是vscode配置launch.json文件出错。开启日志。

"log": true,
1

# 技巧

# 1.容器中不知道php.ini位置咋办?

php -i

# 2.容器中php.ini文件看着难受怎么办?有可视化界面吗?

action中添加一个phpinfo(),请求一下就可以了。nice。

全量分析

评 论:

上次更新时间: 4/9/2020, 6:16:23 PM