本文只讲环境搭建,不涉及具体原理。
出发点:使用xdebug对php项目进行调试
工具准备:
1、ubuntu18 (开发环境)
2、phpstorm (IDE)
前提:已搭建好lnmp开发环境
首先,我们需要安装xdebug,开启php的xdebug扩展
- 安装命令:
pecl install xdebug
- 修改php配置文件php.ini
vi /usr/local/php/etc/php.ini
在最后面加入如下配置:
[xdebug]
zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/xdebug.so"
xdebug.idekey=PHPSTORM
xdebug.remote_host = 192.168.31.165
xdebug.remote_port = 9001
xdebug.remote_handler = dbgp
xdebug.auto_trace = 1
xdebug.remote_autostart = 1
xdebug.remote_log = /tmp/xdebug.log
简单说下各项配置的含义:
zend_extension xdebug扩展so文件位置
xdebug.idekey 与IDE通信的key值,待会在phpstorm也需要用到
xdebug.remote_host IDE所在的主机IP地址
xdebug.remote_port 通信端口,不可与php和nginx通信的9000重复
xdebug.remote_autostart自动开始
- 加入配置后,需要重启下php-fpm,这里以lnmp一件安装包命令为例
lnmp php-fpm restart
phpstorm配置
- phpstorm的php解释器配置(因为用的是远端的php解释器,所以要重新配置)
进入配置面板 File | Settings | Languages & Frameworks | PHP
点击新增一个php解释器:
这里选择连接即可
- 配置debug服务
进入配置面板 File | Settings | Languages & Frameworks
配置端口,和刚才在php.ini对应
- 配置DBGp
这是一种语言和UI的通信协议:https://xdebug.org/docs-dbgp.php
DBGP - A common debugger protocol for languages and debugger UI communication
key填写的和xdebug.idekey字段值一样
主机填写待会web服务访问的地址,填写IP地址也行
- 添加server
远程调试的话,需要勾选路径映射选项,即本地主机项目的路径和远端项目的路径。
- 配置调试选项
注:在这一步,要注意一点是很多网上写着是设置PHP Web Application,但是其实新版的phpstorm已经修改了这个的名称为:
PHP Web Page
进入配置面板
新增
填写好配置信息后,点击应用,会在左侧列表新家一个PHP Web Page选项
- 接着,选择我们刚才创建选项
如下图,点击开始监听php服务器发过来的调试信息
点击开始调试,会自动弹出浏览器访问web服务器。到此,已经完成了2/3了,接下来就是如何配合着Postman使用了
postman请求
其实使用postman来进行请求也简单,在我们刚才点击开始调试的时候,弹出的浏览器地址后面会待着一个很像是通信编号的数字,没错,使用postman的关键是,要在请求地址添加XDEBUG_SESSION_START=14481,这样,即使通过postman来请求地址时,也会将调试信息发送到我们的IDE上。
phpstorm的Debugger面板信息: