Xdebug 安装配置

在写这个文章前,我尝试了很多网上的安装配置教程,但结果要么不便捷,要么调都调不起来。于是我就去查看 Xdebug 官方文档,通过文档中的 Xdebug 远程调试原理图才逐渐知道如何正确的配置。后面再慢慢减少参数设置得到了一份配置少,使用方便的配置方案,在这篇文章里分享给大家。

环境说明

  • Windows
  • Vagrant + VirtualBox + CentOS 7 + Nginx + PHP
  • PhpStorm

配置前准备

  1. 检查 PHP 环境是否已经存在 Xdebug 拓展了

    在命令行中输入 php -m 可以查看 PHP 已加载的拓展

  2. 了解自己环境的配置

    • PHP 版本
    • php.ini 所在地址
    • 服务器系统位数 32位 还是 64位
  3. 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 扩展

  1. 下载 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

  2. 编译安装

    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

    注意:

    编译安装后,会返回扩展所在文件夹。

  3. 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

  1. 打开设置 file -> settings -> Languages & Frameworks
  2. 设置项目使用环境

  3. 设置 debug 配置 Languages & Frameworks -> php -> debug
  4. 设置 xdebug dbgp 配置 Languages & Frameworks -> php -> debug -> dbgp proxy
  5. 设置当前项目所在服务器地址和域名

开始调试

  1. 打开编辑器调试监听
  2. 在指定控制器中添加断点
  3. 请求地址,编辑器会自动进入调试模式中

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 配置好后,启动调试监听没有效果

这个很有可能是你系统的防火墙的安全机制。把这个端口保存起来了,可以直接关闭防火墙进行调试