在 Ubuntu 上配置 PHP 的 Xdebug 调试环境,说难不难,但细节容易踩坑。下面把整个流程拆开讲,从安装到调试,一步步来。
1. 安装 Xdebug 扩展
打开终端,根据你的 PHP 版本安装对应的 Xdebug。比如 PHP 7.4 就装 php7.4-xdebug,PHP 8.1 装 php8.1-xdebug,更省事的做法是直接装通用包:

sudo apt-get update
sudo apt-get install php-xdebug
装完之后,用 php -v
2. 配置 php.ini
先用 php --ini 找到 PHP 配置文件路径。CLI 模式通常对应 /etc/php/{php_version}/cli/php.ini,FPM 模式则是 /etc/php/{php_version}/fpm/php.ini。打开对应文件,在末尾追加以下配置:
zend_extension=xdebug.so
xdebug.mode=debug
xdebug.client_host=127.0.0.1
xdebug.client_port=9003
xdebug.start_with_request=yes
每项的作用:
zend_extension指向 Xdebug 扩展文件,系统会自动查找,不用手动指定路径;xdebug.mode=debug开启调试模式;xdebug.client_host填 PhpStorm 所在机器的 IP,本地调试就是 127.0.0.1;xdebug.client_port默认 9003,必须和 PhpStorm 里的设置一致;xdebug.start_with_request=yes每次请求都自动启动调试,省去手动触发的麻烦。
3. 配置 PhpStorm
打开 PhpStorm 的设置,进入 Languages & Frameworks > PHP,点击“CLI Interpreter”右侧的“…”,选择本地的 PHP 解释器(比如 /usr/bin/php),确定保存。
然后进入 Languages & Frameworks > PHP > Servers,点“+”新建一个服务器。名称随意(比如“Localhost”),Host 填 localhost,Port 填你的 Web 服务器端口(默认 80)。
接着进入 Languages & Frameworks > PHP > Debug,确保 Xdebug 已启用,并且“Debug port”设置为 9003,跟 php.ini 保持一致。
4. 设置断点
在代码编辑器里,需要调试的那一行左侧空白处点一下,出现红色圆圈就表示断点设置成功。你可以设多个断点,调试时程序会依次暂停。
5. 启动调试会话
有两种方式:
- 直接在 PhpStorm 工具栏点那个绿色虫子图标(或按
Shift+F9),选择之前配置好的服务器(比如“Localhost”),就能启动调试。 - 如果用浏览器访问项目,需要先装一个 Xdebug 浏览器扩展(比如 Chrome 的“Xdebug Helper”),开启调试模式后再访问页面,代码就会在断点处停下来。
6. 调试操作
代码暂停后,PhpStorm 的调试工具栏会派上用场。常用操作:
- Step Over(F8):执行当前行,跳到下一行;
- Step Into(F7):进入当前函数或方法内部;
- Step Out(Shift+F8):跳出当前函数;
- Resume Program(F9):继续执行到下一个断点或结束;
- Stop(Ctrl+F2):终止调试。
同时,在“Debug”工具窗口可以实时查看变量值、调用堆栈、当前执行位置等信息,排查问题非常直观。
常见问题排查
- 如果调试没触发,先检查
xdebug.start_with_request=yes是否写对了,再试试重启 Web 服务器(sudo systemctl restart apache2或nginx)和 PhpStorm。 - 确认
xdebug.client_port和 PhpStorm 的端口设置完全一致,避免端口冲突。 - 如果用的是 Nginx,别忘了在
nginx.conf里配置好fastcgi_pass指向 PHP-FPM 的套接字,然后重启 Nginx 使配置生效。