最近在学习Laravel框架,比较麻烦的一个问题就是调试,比较好的调试工具就是xdebug,不过个人还是希望能够使用PHPStorm这样的IDE直接进行单步调试,这样可以更好地了解具体变量的情况,找问题的时候会更加方便,在找了一堆资料之后终于找到了一篇靠谱地,并且尝试成功。原帖地址在这:https://pixelfear.com/blog/xdebug-laravel-valet-phpstorm-composer
PHP7.0似乎自带了xdebug,所以不需要再重新安装了。在MAC OS系统下,打开/usr/local/etc/php
目录,会看到不同版本的php,这里我个人用的是7.1版,所以直接进入7.1
目录、在这个目录下有个php.ini
文件,这个文件就是配置文件。使用编辑器打开,在文件最后加上这么几句:
[xdebug]
zend_extension="/usr/local/opt/php71-xdebug/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_autostart=1
xdebug.remote_port=9001
这里一定要记得改端口,因为valet会使用9000端口,如果不改的话就会产生冲突。改完之后保存,然后把/usr/local/etc/php/7.1/conf.d
下的ext-xdebug.ini
文件删除。(这个文件也引用了关于xdebug的配置,直接删掉最省事)
完毕之后在命令行输入valet restart
之后重启的时候没有产生冲突,那么这个时候就已经可以在valet中使用xdebug了。
如果想要在PHPStorm中使用单步调试,那么还需要再配置一下PHPStorm。首先是关于PHP解释器的配置,直接在Preference->Languages & Frameworks -> PHP
中配置设置好路径,一般是在usr/local/bin/php
目录下,PHPStorm会自动扫描到最新版,并且在之前的配置都设置好的情况下,在PHP executable右下方你会看到Debugger: Xdebug
字段,这就说明我们已经可以使用Xdebug来调试了。
当然Debug的设置也是需要我们手动调整的,在Preference -> Languages & Framewords -> PHP -> Debug
选项卡下面,找到Xdebug
这一项,然后把端口设置为9001(其实就是之前在php.ini里面自己设置好的端口,不想用9001也可以,就是注意不要和valet的9000冲突了)。然后取消勾选两个Force的选项,这两没啥意义,选了的话每次Valet访问server.php的时候xdebug都会停下来。
最后一步就是设置项目了,打开Preference -> Languages & Frameworks -> PHP -> Servers
,创建一个新的server,名称直接选择自己的项目就好了,然后路径是自己的项目名称加上后缀.dev
,端口还是80,调试器选择Xdebug。之后在调试的时候可能需要在配置一下运行设置,也可以自己在Run -> Edit Configurations
里面设置,直接新增一个PHP Application,然后在这个Application内部设置参数: server选择刚刚创建的server,start URL是指你要调试的路径,如果整个项目都想调试那么直接按默认设置填/
就行了。到此为止全部的设置就完成了,接下来直接从Run中选择Debug就可以了,一定要记得用Debug进入页面,否则是不会触发断点的。