Mac下使用PhpStorm+Xdebug进行PHP断点调试

PhpStorm是一个轻量级且便捷的PHP IDE,其提供的智能代码补全,快速导航以及即时错误检查等功能大大提高了编码效率。它以其独特的开发便利性,短时间内赢得了大量PHPer的青睐。

Xdebug是一个开放源代码的PHP程序调试器(即一个Debug工具),可以用来跟踪,调试和分析PHP程序的运行状况。你可以通过调试器进行前后端交互式地调试脚本。

PhpStorm作为一款强大的IDE,debug功能自然不在话下。

下面给大家说说这两个工具如何搭配起来进行php断点调试。

整个流程大致如下:

  1. 下载并安装php对应版本的xdebug扩展;
  2. 修改 php.ini 配置文件,并重启web服务器
  3. 配置 PhpStorm
  4. 安装Chrome的XDebug扩展
  5. 在PhpStorm 程序中打断点,打开debug模式。

一、安装xdebug扩展

php版本和xdebug版本一定要匹配,下载地址
如果不清楚要下载哪个版本,点击自动匹配你的php版本,进入操作如下(两个页面):
注意:拷贝的phpinfo()信息必须是整个页面的(CMD+A全选,然后复制粘贴过去),否则下面页面操作提示和实际操作会有出入。

xdebug-wizard.png
xdebug-instructions.jpg

我这里环境是XAMPP,其他环境类似。具体操作按照INSTRUCTIONS里面的步骤一步一步往下操作,直到第7步就可以了。

提示:
如何你使用mac系统自带的php环境,在第7步拷贝xdebug.so的时候可能会出现下面的提示:

提示:cp: /usr/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so: Operation not permitted

原因是 OSX 10.11 El Capitan(或更高)添加了一个新的安全机制叫系统完整性保护 System Integrity Protection (SIP),对于目录/System/sbin/usr(不包含(/usr/local/)都是不能修改的,需要把它关掉才行,具体操作步骤请看《如何关闭 Mac 中 SIP 安全设置功能》

二、配置php.ini,并重启web服务器

找到并打开php.ini文件,添加如下配置,并重启web服务器。

[xdebug]
;配置xdebug扩展
zend_extension = /Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20151012/xdebug.so
;是否运行远程终端,必须开启
xdebug.remote_enable = On
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "localhost"
;端口号必须和phpstorm中的配置保持一致,这里设为9100
xdebug.remote_port = 9100
;调试器关键字
xdebug.idekey = PHPSTORM

重启服务器后,查看phpinfo(),出现下面的内容,表示xdebug扩展安装成功。
xdebug-phpinfo.jpg

三、配置PhpStorm

首先,打开PhpStorm,找到「Preferences」-「Languages & Frameworks」-「PHP」-「Debug」,修改对应的xdebug端口号。

phpstorm-xdebug1.png

然后,在「Debug」-「DBGp Proxy」里面填写以下内容。

phpstorm-xdebug2.png

接着,在点击「Debug」后面「Servers」,点击左上角的“+”号,添加一个server配置。在里面录入你的项目名和本地调试主机和端口,选择Xdebug调试器。

phpstorm-xdebug3.png

接着,点击phpstorm工具栏上的的三角形,选择Edit Configurations,添加项目调试配置,保存后phpstorm配置完成。
phpstorm-xdebug4.jpg
phpstorm-xdebug5.jpg
phpstorm-xdebug6.jpg
phpstorm-xdebug7.jpg

设置完成后,打开浏览器访问页面http://test.cc/index.php,phpstorm进入断点中,那就证明你配置成功了。

phpstorm-xdebug8.jpg

这样搞下来,是不是明显比以前使用var_dump()print_r()echo()等函数打印调试信息更方便了,Enjoy your coding!

等等,上面的步骤是不是漏掉了什么?之前不是说要装一个Chrome Xdebug扩展应用程序吗?
其实这里的xdebug扩展的作用和phpstorm里面的调试配置作用是一样的,配置其中一个就可以了。
具体怎么安装就不说了,安装好后配置如下,配置好,点击扩展图标,选择“Debug”,图标变成绿色表示成功!

chrome-xdebug.jpg

踩到的坑

问题1:拷贝xdebug.so失败

换到mac自带php环境后,无法拷贝xdebug.so文件,上面已经说了,是因为SIP机制引起的。

问题2:Chrome xdebug插件死活启动不了,是灰色的。

为了避免端口冲突将默认的xdebug监听端口改成了9100,后来百度了发现,坑爹的chrome xdebug竟然会使用9100这个端口,把php.ini和phpstorm里面xdebug配置改成9001后就可以了。

如需转载,请注明出处: https://www.chadou.me/p/223

最新发布