Xdebug 安装配置
在写这个文章前,我尝试了很多网上的安装配置教程,但结果要么不便捷,要么调都调不起来。于是我就去查看 Xdebug 官方文档,通过文档中的 Xdebug 远程调试原理图才逐渐知道如何正确的配置。后面再慢慢减少参数设置得到了一份配置少,使用方便的配置方案,在这篇文章里分享给大家。
环境说明
- Windows
- Vagrant + VirtualBox + CentOS 7 + Nginx + PHP
- PhpStorm
配置前准备
检查 PHP 环境是否已经存在 Xdebug 拓展了
在命令行中输入 php -m 可以查看 PHP 已加载的拓展
了解自己环境的配置
- PHP 版本
- php.ini 所在地址
- 服务器系统位数 32位 还是 64位
Xdebug 和 Phpstorm 交互的原理
- 服务器的IP和端口是 10.0.1.2:80
- IDE 的客户端IP是 10.0.1.42, 所以服务器上 xdebug.remote_host=10.0.1.42
- IDE 监听的调试端口为 9000, 所以服务器上 xdebug.remote_port=9000
- IDE 所在的客户端,对 Xdebug 的服务器进行请求
- Xdebug 与 10.0.1.42:9000 的客户端 IDE 监听端口关联
- 运行调试, Xdebug 所在的服务器提供 HTTP 响应
- 服务器的IP和端口是 10.0.1.2:80
- IDE 的客户端IP是一个未知的IP, 所以服务器上 xdebug.remote_connect_back=1
- IDE 监听的调试端口为 9000, 所以服务器上 xdebug.remote_port=9000
- 发出 HTTP 请求后,Xdebug 将从 HTTP 请求头获取 IP 地址
- Xdebug 会和从 HTTP 请求头获取 IP 地址的客户端 IDE 监听端口关联
- 运行调试, Xdebug 所在的服务器提供 HTTP 响应
下载缺少的扩展和软件
配置
PHP 添加 Xdebug 扩展
下载 Xdebug 扩展源码
1
2
3
4
5
6
7
cd /usr/local/src
wget https://xdebug.org/files/xdebug-2.7.0alpha1.tgz
解压
tar -zxvf xdebug-2.7.0alpha1.tgz编译安装
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
cd xdebug-2.7.0alpha1
生成安装脚本
phpize
设置安装配置参数
vim install-sh
> /configure --with-php-config=/usr/local/php/bin/php-config
运行安装配置
sh install-sh
编译扩展,使用两个 cpu 内核运行(可以快很多)
make -j 2
编译安装
make install注意:
编译安装后,会返回扩展所在文件夹。
php.ini 中添加 Xdebug 配置
1
2
3
4
5
6
7
8
9
[xdebug]
zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so"
xdebug.idekey="PHPSTORM"
xdebug.remote_enable = On
xdebug.remote_autostart=On
xdebug.remote_connect_back=On
xdebug.remote_port=9001
配置 PhpStorm
- 打开设置 file -> settings -> Languages & Frameworks
- 设置项目使用环境
- 设置 debug 配置 Languages & Frameworks -> php -> debug
- 设置 xdebug dbgp 配置 Languages & Frameworks -> php -> debug -> dbgp proxy
- 设置当前项目所在服务器地址和域名
开始调试
- 打开编辑器调试监听
- 在指定控制器中添加断点
- 请求地址,编辑器会自动进入调试模式中
FQA
我的 PHP 运行环境在 Windows 下应该要怎么设置
Windows 的添加扩展会比 Linux 简单很多。直接下载 dll 扩展文件就可以了。除了 zend_extension 设置的地址不一样。其他可以 Xdebug 配置可以共用。
php.ini 中配置 Xdebug 为什么不用默认的 9000 端口
因为 php-fpm 是使用 cgi协议 进行运行,所以它也需要端口,而它默认的端口也是 9000。如果你像我这样使用虚拟机的方式进行访问项目,不会出问题。但是如果你使用的是本地的 php-fpm 那他就会出现端口被占用的情况。为了避免就直接用 9001 来代替默认端口
php.ini 中可以配置的 Xdebug 参数有那些,我应该在那里得到更全面的参数说明
Xdebug 官网那里的手册有详细说明, Xdebug 远程连接文档链接 里的 ctrl + f 搜索 Related Settings 就可以看到连接参数了
我应该下载那个版本的 Xdebug
如果实在不知道自己的 windos 系统的 PHP 环境该用那个版本的扩展
可以通过下载页提供的工具进行下载 工具链接
多行文本框里面是放通过 php -i 命令返回的配置内容
为了更完整的取得参数可以 php -i > D:/php-ini.txt 保存到文件中
为什么我的 ide 配置好后,启动调试监听没有效果
这个很有可能是你系统的防火墙的安全机制。把这个端口保存起来了,可以直接关闭防火墙进行调试