如何用PhpStorm 2017.2.4搭配Zend Debugger调试PHP 5.6?
兄弟,我太懂你这种 frustration 了——用着PhpStorm 2017.2.4搞PHP5.6,Xdebug直接歇菜,只能靠Zend Debugger,还连不上,就想有个像Chrome调JS那样顺畅的断点、看变量的调试体验对吧?我之前帮朋友搞定过一模一样的配置,给你捋一套稳的步骤:
第一步:先把Zend Debugger的版本搞对,这是最容易踩的坑
- 必须下载**对应PHP5.6 + 对应操作系统(Windows/Linux/Mac)+ 对应线程安全(TS/NTS)**的Zend Debugger版本,PhpStorm 2017.2.4对Zend Debugger的兼容版本建议选5.6.x分支的最新稳定版,别瞎下载高版本或者错选TS/NTS。
- 怎么看PHP的TS/NTS?写个
<?php phpinfo(); ?>文件跑起来,找“Thread Safety”项,显示enabled就是TS,disabled是NTS,别搞混。
第二步:配置PHP.ini启用Zend Debugger
- 先通过phpinfo()里的“Loaded Configuration File”找到你的PHP.ini路径,打开后在文件末尾加以下配置(记得替换成你的实际文件路径):
; Linux/Mac用.so后缀,Windows用.dll zend_extension=/你的路径/ZendDebugger.so ; 允许本地PhpStorm连接,多写几个保险 zend_debugger.allow_hosts=127.0.0.1,localhost zend_debugger.enable=1 zend_debugger.remote_enable=1 ; 默认端口,别和其他服务冲突就行 zend_debugger.remote_port=10137
- 配置完一定要重启你的Web服务器(Apache/Nginx),再刷新phpinfo页面,如果能看到“Zend Debugger”的模块信息,说明加载成功了,这步过了才算基础达标。
第三步:PhpStorm里的Zend Debugger配置要精准
- 打开PhpStorm,进
File > Settings > Languages & Frameworks > PHP > Debug,在Debuggers选项卡找到Zend Debugger,确保Port是10137(和php.ini里的一致),其他默认就行。 - 再进
File > Settings > Languages & Frameworks > PHP > Servers,点击加号新增服务器:- Name:随便填,比如“Local PHP5.6 Server”
- Host:localhost(或者你的本地域名)
- Port:80(或者你的Web服务实际端口)
- Debugger:选Zend Debugger
- **重点!**勾选“Use path mappings”,把你的项目本地路径(比如
/Users/xxx/my-project)映射到服务器上的对应路径(本地服务器就是你的项目根目录,比如D:\www\my-project),路径不匹配的话,断点绝对不会命中。
第四步:启动调试的正确姿势
- 先在PhpStorm里给目标PHP文件打断点(点击行号旁边的空白处,出现红色圆点就行)。
- 点击PhpStorm右上角的“Start Listening for PHP Debug Connections”按钮(就是那个电话听筒图标),确保它是亮着的。
- 触发调试的两种方式:
- 浏览器插件:装个Zend Debugger的浏览器辅助插件(Firefox或Chrome都有),开启调试模式后访问你的PHP页面,PhpStorm会自动捕获连接。
- 直接在PhpStorm运行:右键点击要调试的PHP文件,选“Debug 'filename.php'”,Web项目的话,只要服务器配置对,PhpStorm会自动打开浏览器并触发调试。
常见坑的排查
- 断点没命中:
- 先检查路径映射是不是完全对应,本地和服务器的路径不能有半毛钱差池。
- 看php.ini里的
zend_debugger.allow_hosts有没有包含你的PhpStorm所在IP,本地的话127.0.0.1和localhost都加上准没错。 - 看PhpStorm的Debug控制台,有没有报错,比如端口被占用,那就换个端口(php.ini和PhpStorm里要同步改)。
- Zend Debugger没在phpinfo里显示:
- 检查zend_extension的路径是不是绝对路径,有没有写错,TS/NTS版本是不是对应。
- 确认Web服务器已经重启,有时候没重启配置不会生效。
内容的提问来源于stack exchange,提问作者Avi
相关产品推荐
相关产品推荐

