环境
- 系统版本 Macos
- PHP版本7.3
- phpstorm版本2020.1
Xdebug配置
- 首先去 xdebug 官网下载对应php版本的xdebug扩展,将phpinfo的信息复制到下图的输入框中,点击here就会出现对应的xdebug扩展。
- 打开php.ini添加如下代码
[XDebug] #xdebug扩展文件 windows是.dll结尾 zend_extension =xdebug.so #开启xdebug日志 xdebug.remote_log = /usr/local/php/xdebug.log #开启远程调试 xdebug.remote_enable=1 #开启远程调试自动启动 xdebug.remote_autostart = 1 #启用代码自动跟踪 xdebug.auto_trace =1 #收集变量 xdebug.collect_vars=1 #显示错误信息 xdebug.show_error_trace=1 #远程调试参数,不需要可以关闭 xdebug.remote_handler = dbgp #本地调试填写localhost 远程调试填写本机真实ip地址 xdebug.remote_host= localhost #端口号 xdebug.remote_port = 9002 xdebug.idekey = "PHPSTORM"
phpstorm配置
指定本地php环境
这里的端口设置和php.ini设置要一致
添加本地虚拟主机域名
配置chrome
(如果开启了xdebug.remote_autostart =1 本地调试就不需要安装此插件了,请忽略此步)首先我们需要对浏览器安装Xdebug helper插件,用于在请求中添加参数,类似:XDEBUG_SESSION_START=session_name。
- Chrome: https://chrome.google.com/webstore/detail/xdebug-helper/
- Firefox: https://addons.mozilla.org/en-US/firefox/addon/the-easiest-xdebug/
更改配置
运行项目
运行项目之前开启监听
打断点 浏览器访问
断点成功
解决长时间调试500错误
断点成功以后过十几秒浏览器可能会报500错误,我们需要改下nginx的配置,添加fastcgi_read_timeout
fastcgi_read_timeout是指fastcgi进程向nginx进程发送response的整个过程的超时时间,单位秒。
- 左侧绿色三角形 : Resume Program,表示將继续执行,直到下一个中断点停止。
- 左侧红色方形 : Stop,表示中断当前程序调试。
- 上方第一个图形示 : Step Over,跳过当前函数。
- 上方第二个图形示 : Step Into,进入当前函数內部的程序(相当于观察程序一步一步执行)。
- 上方第三个图形示 : Force Step Into,強制进入当前函数內部的程序。
- 上方第四个图形示 : Step Out,跳出当前函数內部的程式。
- 上方第五个图形示 : Run to Cursor,定位到当前光标。
- Variables :可以观察到所有全局变量、当前局部变量的数值
- Watches : 可以新增变量,观察变量随着程序执行的变化。