准备工作
- Laravel提供的Homestead 环境下,php+nginx+xdebug已经预先安装完成。
- chrome浏览器下安装Xdebug helper
- 调试post请求建议使用postman
配置Homestead
- 通过ssh登录到虚拟机中
- 通过
xon
命令启用xdebug,出现类似如下输出证明已经启用xdebug
xdebug已启用
- 通过命令找到网关(用于配置后续的remote_host)
netstat -rn | grep "^0.0.0.0 " | cut -d " " -f10
查询网关
- 通过命令找到xdebug的ini配置文件
php --ini | grep 'xdebug'
搜索配置文件位置
需要注意的是这里通过命令行查询的php是cli模式,网页调试一般是fpm模式,所以路径应该对应换成/etc/php/7.1/fpm/conf.d/20-xdebug.ini
- 编辑xdebug的配置文件
sudo vim /etc/php/7.1/fpm/conf.d/20-xdebug.ini
将原有的配置替换为:
zend_extension=xdebug.so
xdebug.remote_enable = 1
xdebug.remote_port=9000 # 远程通信端口
xdebug.max_nesting_level=512
xdebug.remote_host=10.0.2.2 # 上文中提到的网关地址
xdebug.remote_autostart=1 # 自动启动设为true
- 重启nginx和php
sudo /etc/init.d/php7.1-fpm restart
sudo /etc/init.d/nginx restart
至此,Homestead虚拟机中的配置完成
配置phpstorm
-
打开设置,依次选择Languages & Frameworks => PHP ,进行对应的设置
设置 Interpreters
-
选择Debug,默认设置一般就行,注意检查红框位置,之后验证即可
debug设置
-
点击Validate进行验证,将本地的public目录和远程的访问url填写后,点击Validate,对应有不对的依照提示更改
验证远程设置
-
配置Servers,host填写app的地址,注意进行map映射本地和远程目录
编辑服务
-
依次点击Run=>Edit Configrations
编辑debug配置
-
新增一个PHP Remote Debug,配置如图(IDE key用于调试)

-
至此,phpstorm配置完成,点击图标开始监听,然后点击绿色小虫开始debug
启动监听
-
到浏览器中打开对应的网页,例如在public目录下新建一个test.php用于调试,则打开对应的url/test.php,此时浏览器应该处于等待响应状态,打开phpstorm会发现已经进入debug状态,可以查看各种信息。
调试界面
-
通过打断点,单步调试,检查变量等方法,可以快速地调试程序,修复bug
使用chrome浏览器打开网页进行调试
-
设置Xdebug Helper 的IDE key为 phpstorm即可
Xdebug Helper 设置
使用postman进行API方式调试
-
在postman的url中添加参数
XDEBUG_SESSION_START=PHPSTORM
postman调试
-
点击send后到phpstorm中调试即可,与浏览器一致。
常见的问题
debug界面一直处于Waiting for incoming connection with ide key 'PHPSTORM'
状态,刷新网页也没有任何响应

解决办法:通常是host配置错误,注意要配置为homestead中查询到的网关地址(本地调试配置通常为192.168.10.1,远程调试通常为10.0.2.2)
网友评论