使用phpstorm+xdebug进行PHP远程调试

xDebug是最常见的php调试工具之一,怎么能不会用


使用场景:本机调试php web、脚本。调试远程机器上运行的php web、脚本。本机使用相对简单,对于习惯把开发环境搭建到服务器的同学当然是远程调试更方便,一次搭建开发环境、到处编码不是梦。

注意事项:现有网络教程中大都忽略了一个问题,远程服务器需要能访问到开发机,因为当服务器接收到到debug标志的请求时需要把信息发送到开发机的phpstorm中。对于有NAT的网络环境中可以通知端口映射或ssh通道的方式保证开发机和服务器之间可以正常通信。


一、服务器安装xdebug

  网上可以很轻易的搜到安装教程,大体的步骤基本上就是:获取phpinfo信息,根据phpinfo信息安装php开发工具包,下载xdebug源码、编辑安装,修复php.ini文件启用xdebug。

  参考这篇文章:https://www.jianshu.com/p/1b617b9066b6 

  1、在自己服务器上创建一个文件打印phpinfo();

  2、访问并右键查看网页源码复制出来文本,粘贴到  https://xdebug.org/wizard.php  

  3、根据提示进行安装操作

  注意:较低版本的php可能不支持,安装php 开发工具包的时候可能会有版本冲突,可以忽略,根据命令行的提示来。

  关键配置:php.ini

zend_extension=xdebug_module_goes_here #扩展路径
xdebug.remote_enable=1 #允许远程调试
xdebug.remote_host=127.0.0.1 #调试机器的IP地址,都在一台机器的话填写127.0.0.1 内网互通的机器的话填写安装IDE机器的IP地址,远程不能互通的机器填写127.0.0.1 然后配置ssh通道
xdebug.remote_port=9000 #调试机器的端口 建议改成其他端口,9000默认是php-fpm的端口容易冲突

二、开发机安装phpstorm

  这一步网上的教程也比较多。Windows安装参考:https://www.jianshu.com/p/b6d69d86e21a mac安装参考:https://www.jianshu.com/p/e91d895b9a46 

  关于破解,建议有能力的同学买正版授权,学生可以申请学生版。破解可以参考:http://idea.lanyus.com/ 



三、ssh通道

  参考官网文档:https://www.jetbrains.com/help/phpstorm/remote-debugging-via-ssh-tunnel.html 找来找去还是phpstorm的官网文档最全,建议直接安装官网文档进行配置,看英文困难的同学可以用翻译软件翻一下,关键命令就是这个了:

ssh -R 9000:localhost:9000 username_goes_here@hostname_goes_here

对于开发机和服务器不能互通的同学这步一定要做,端口换为自己设置的端口,要与php.ini内配置的一致,后面的用户名和hostname换成自己服务器的实际用户和ip。执行成功可以在服务器上看到一个对应端口的监听。


四、phpstorm 配置

还是参考官方文档:https://www.jetbrains.com/help/phpstorm/zero-configuration-debugging.html 

1、设置xdebug监听端口,preference或setting内

2、添加调试配置

添加一个php web page类型的,选中server,如果没有server可供选择的话,点击后面...添加sever

添加server,配置访问域名和目录映射关系


五、开始调试

点击电话图标打开debug监听

点击小乌龟图标开始调试,会自动跳出浏览器打开页面

这时候就可以在代码中添加断点,刷新浏览器进行调试了。

debugger窗口可以看到当前的变量值,点击窗口顶部的按钮就可以进行单步调试了。


六、多人调试

参考官网文档:https://www.jetbrains.com/help/phpstorm/multiuser-debugging-via-xdebug-proxies.html

重点是在大家都可以访问的局域网内搭建一个proxy


总结:1、注意要开启ssh通道保证开发机与服务器可以双向通信

2、server配置要设置目录映射,如果配置有问题调试的时候console窗口会提示无法找到对应文件

3、可以通过Settings/Preferences->Languages & Frameworks->PHP->Debug 窗口内的validate进行服务器安装请求检验,

检查结果会提示有哪些问题需要去解决,如果使用的ssh通道并且是127.0.0.1 可以忽略remote_host 的错误提示,


最后,开心的写BUG去吧


文章分类