# 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
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
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
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。
全量分析 阅读量: