惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

大猫的无限游戏
大猫的无限游戏
Security Archives - TechRepublic
Security Archives - TechRepublic
T
Threat Research - Cisco Blogs
A
Arctic Wolf
S
Securelist
O
OpenAI News
T
Threatpost
Forbes - Security
Forbes - Security
N
News and Events Feed by Topic
S
Secure Thoughts
H
Heimdal Security Blog
S
Security Affairs
P
Privacy International News Feed
C
Cisco Blogs
C
CERT Recently Published Vulnerability Notes
Cyberwarzone
Cyberwarzone
N
News and Events Feed by Topic
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
P
Palo Alto Networks Blog
S
Security @ Cisco Blogs
Hacker News - Newest:
Hacker News - Newest: "LLM"
博客园 - 三生石上(FineUI控件)
月光博客
月光博客
T
Tailwind CSS Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Hacker News: Ask HN
Hacker News: Ask HN
T
Troy Hunt's Blog
S
SegmentFault 最新的问题
腾讯CDC
V
Visual Studio Blog
Last Week in AI
Last Week in AI
H
Hacker News: Front Page
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Project Zero
Project Zero
WordPress大学
WordPress大学
NISL@THU
NISL@THU
博客园 - 【当耐特】
博客园 - Franky
Webroot Blog
Webroot Blog
博客园_首页
T
Tenable Blog
雷峰网
雷峰网
Google Online Security Blog
Google Online Security Blog
阮一峰的网络日志
阮一峰的网络日志
V2EX - 技术
V2EX - 技术
Recent Commits to openclaw:main
Recent Commits to openclaw:main
L
Lohrmann on Cybersecurity
The Hacker News
The Hacker News

czp's blog

Ubuntu 下使用 zsh · HonKit 使用 VNC 来远程管理服务器 · HonKit Linux 下无限试用 JetBrains · HonKit 使用 KMS 激活 Windows · HonKit 为 KVM 中的 Windows 虚拟机启用 VirtIO · HonKit 在 Spring Boot 中处理 MissingKotlinParameterException · HonKit 用 Spring Native 拯救微服务 · HonKit Ubuntu 增加最大文件打开数量限制 · HonKit 将 Minecraft 服务端编译到 native · HonKit 用凝聚力购买 P 社游戏 DLC · HonKit 模拟超星网课 Android 客户端 · HonKit 模拟 Bilibili Android 客户端 · HonKit 模拟哔咔 Android 客户端 · HonKit 异步是什么 · HonKit GCP Pub/Sub push 至 IAP 保护的 Endpoint · HonKit 部署 Spring Native 到 GCP App Engine · HonKit 多个 Gradle SubProject 同时编译导致 CI/CD 内存耗尽 · HonKit Google Cloud Build 运行 DIND · HonKit 在 Google Storage 中部署 SPA · HonKit Terraform 不自动更新 CloudRun service · HonKit Telegram Bot 收不到普通群聊消息的问题 · HonKit 加密货币交易 · HonKit 挖掘以太坊 · HonKit 挖掘门罗币 · HonKit 小明学英语 · HonKit 卖程序的小女孩 · HonKit 一个测试工程师走进一家酒吧 · HonKit 我给你们讲个 TCP 笑话吧! · HonKit 我给你们讲个 UDP 笑话吧! · HonKit 格局打开 · HonKit c 语言常见未定义行为 · HonKit 在 Kotlin 使用 SpaceEngineers Remote API · HonKit Kotlin 协程 · HonKit 在 Spring Boot 中正确注册 Jackson Module · HonKit Spring Boot Jpa 使用 Google Cloud SQL · HonKit Spring Boot 中配置单页应用 · HonKit Spring Boot 无法加载 ClasspathResource 问题 · HonKit 正确打包 Spring Boot 到 war · HonKit czp's blog · HonKit 鸣谢列表 · HonKit 友链 · HonKit
正确调试 PHP · HonKit
2026-04-11 · via czp's blog

环境: Ubuntu 18.04 | PHPStorm 2018.2.3 | PHP 7.2.10

之前在 Google 搜索 PHPStorm xdebug, 结果搜到的中文结果里, 全是用什么 PHPStorm 的 Server 设置, 然后一阵眼花缭乱的配置, 说道, 调试 PHP 很简单.

实际上 PHPStorm 文档中已经写的很明确了, 调试 PHP 不需要任何配置 https://www.jetbrains.com/help/phpstorm/zero-configuration-debugging.html

所以我们今天就来看看, 如何正确调试 PHP.

调试器

PHP 的调试器有好几个, 其中最有名的是 xdebug, 同时这也是 PHPStorm 推荐的调试器.

PHP 自身不自带调试器, 调试器是一个模块. 所以我们首先要来安装它. 执行以下命令行

apt install php-xdebug

没错, 这样就安装好了.

然而 xdebug 默认没有配置 IDE KEY, 所以我们还是得配置一下(说好的 zero-configuration 呢).

首先, 我们得找到 xdebug 的配置文件的位置, 我们使用 PHP 探针 来查看 PHP 的所有配置信息.

使用命令行

php -r "phpinfo();" | grep xdebug

输出的内容中, 第一行应该是这样的

/etc/php/7.2/cli/conf.d/20-xdebug.ini,

这就是 xdebug 的配置文件路径, 我们打开并修改它, 填入如下配置(root 权限)

zend_extension=xdebug.so
xdebug.idekey='PHPSTORM' 
xdebug.remote_enable=1

zend_extension 是默认就存在的配置项, 不需要修改它. xdebug.idekey 指定了一个字符串, 用于与 xdebug 建立连接(Socket)时的密钥 xdebug.remote_enable 由于使用的是一个 Socket 连接, 所以所有调试都是远程调试

(注意, xdebug 的默认端口为 9000, 不应该改变这个设置, 因为大量工具都以此为默认值)

如果配置项不存在则添加它, 最后保存这份文件.

使用 Built-in Server

PHP 5.4 开始, PHP 就提供了一个用于快速调试的内建服务器, 支持静态文件与 PHP 脚本, 也支持 Symbolic Linkrouter.php.

它相当的方便, 但是很多人并不知道它的存在.

首先我们在 PHPStorm 中创建一个使用内建服务器的 Run Configuration.

yii2 框架为例, 配置大致上是这样的

yii2 run configurations

就这么简单么, 没错, 就是这么简单.

之后启动这个服务端, 我们就可以看到 yii2 的标志性首页了.

我们迫不及待的在代码里打了一个断点, 然后刷新页面, 发现并没有在断点处中断.

因为此时并没有东西连接到 xdebug 上.

我们还需要一个浏览器插件.

XDebug Helper

Chrome 为例, 需要首先安装插件 https://chrome.google.com/extensions/detail/eadndfjplgieldjbigjakmdgkmoaaaoc

如果你使用 FireFox, 详见此处 https://www.jetbrains.com/help/phpstorm/browser-debugging-extensions.html

插件安装后, 我们在 Chrome 右上角可以看到插件的图标(一个小虫子), 我们在图标上右键, 点击 选项 即可打开插件的设置界面.

IDE Key 这一项下面的下拉框中选中 PhpStorm, 此时 IDE Key 会被自动设置为 PHPSTORM, 这就是为什么之前我们在 xdebug 设置中, 需要把 xdebug.idekey 的设置为这个.

之后我们打开我们的网站上的一个页面(随便哪个页面)(HttpStatus 必须是 200, 否则插件无法启用), 然后在插件的图标上点左键, 再点 Debug

这样, 插件就启用了对当前站点的调试.

注意, 启用后, 插件图标应该变绿.

调试

然后我们再到代码中打一个断点, 刷新页面, 此时我们的代码确实在这里停下了, 并可以看到所有的变量.

我们终于可以调试 PHP 了, 小伙伴们一把眼泪一把鼻涕地跟 echo 调试法 说再见.