phpstorm配置xdebug断点调试

IDE 2019-12-27 阅读 227 评论 0

使用xdebug是phper不可缺少的一个工具,与经常写 print_r()、var_dump()、die()、exit()实现测试相比,断点调试有时候能够达到事半功倍的效果。下面介绍在phpstorm配置xdebug本地断点调试的教程。mac,linux,window都可以适用。

查看xdebug是否安装

查看是否成功安装了xdebug扩展,可以查看phpinfo(),或者运行命令行

$ php -m | grep xdebug
xdebug

如果有显示xdebug,表示已经安装

下载与php对应的xdebug版本

为了方便,可以使用了xdebug官方介绍的Installation Wizard。我们可以将phpinfo()、或者运行命令行 php -i 的输出结果,直接复制粘贴到 https://xdebug.org/wizard 的方框里面,点击底部的“Analyse my phpinfo() output” 按钮提交,系统将会分析本地的php安装环境并显示相应的安装流程。如我的电脑是mac,显示的结果如下图。

php.ini配置xdebug

zend_extension = /develop/opt/php-7.3.4/lib/php/extensions/no-debug-non-zts-20180731/xdebug.so
; 配置xdebug端口,默认端口是9000
xdebug.remote_port=9001
; 非常重要
xdebug.remote_autostart=on
; 非常重要
xdebug.remote_enable=on

由于部分开发者的电脑的web 服务器是nginx,并且结合了php-fpm进程管理器,php-fpm的默认端口也是9000,在配置xdebug时,可以用其他非9000端口,如9001,避免端口冲突。xdebug.remote_autostart 和 xdebug.remote_enable 同样很重要,一定要开启,设置为on,否则xdebug无法进入断点,不然使用 phpstorm 不会触发断点。

phpstorm配置cli interpreter

Preferences.. -> Languages & Frameworks -> PHP。点击 CLI Interpreter 一行的右边 ”...“ 按钮,在弹出框中,点击左上角的“+”号,选择“Other Local...”,添加php的路径,就是php安装目录下 /bin/php。

在CLI Interpreter选择刚刚配置的php,点击OK按钮

phpstorm配置xdebug端口

Preferences.. -> Languages & Frameworks -> PHP -> Debug,将端口改成 上一步php.ini配置的端口9001。

phpstorm查看单步断点调试

开启右上角 Start Listening for PHP Debug Connections,绿色图标,表示开启调试,红色图标表示停止调试。

左键点击代码区域的左边行号,出现一个小红点,表示断点这一行,删除断点行,点击一下红点即可。

打开浏览器,输入网址访问,phpstorm会弹出“Incoming Connection From Xdebug”提示,点击Accept。

查看调试变量

以上就是PhpStorm+Xdebug安装与配置的最完整最详解教程。

 
zend_extension = /develop/opt/php-7.3.4/lib/php/extensions/no-debug-non-zts-20180731/xdebug.so
; 配置xdebug端口,默认端口是9000
xdebug.remote_port=9001
; 非常重要
xdebug.remote_autostart=on
; 非常重要
xdebug.remote_enable=on
 
最后更新 2020-06-05
MIP.watch('startSearch', function (newVal, oldVal) { if(newVal) { var keyword = MIP.getData('keyword'); console.log(keyword); // 替换当前历史记录,新增 MIP.viewer.open('/s/' + keyword, {replace: true}); setTimeout(function () { MIP.setData({startSearch: false}) }, 1000); } }); MIP.watch('goHome', function (newVal, oldVal) { MIP.viewer.open('/', {replace: false}); });