phpstrom 安装配置使用 xdebug
下载并安装 xdebug
-
windows
将 phpinfo() 输出的内容全选复制到 https://xdebug.org/wizard 中,确定需要下载的版本
-
linux
官网:https://xdebug.org/download 或者兼容 swoole 的xdebug 版本:https://github.com/swoole/sdebug
[mac sdebug 源码编译安装实例] git clone https://github.com/swoole/sdebug.git -b sdebug_2_9 --depth=1 cd sdebug phpize ./configure make clean make make install
添加扩展到php.ini并配置
mac php.ini 配置
[xdebug]
; swoole - sdebug
; git clone https://github.com/swoole/sdebug.git -b sdebug_2_9 --depth=1
zend_extension=xdebug
;是否运行远程终端,必须开启
xdebug.remote_enable=On
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
;这个端口号要和phpstorm中的保持一致,示例的端口是9009
xdebug.remote_port=9009
;调试器关键字
xdebug.idekey=PHPSTROM
重启并检查是否存在xdebug
php -m 或者 php --ri Sdebug
开始配置phpstrom的设置
以下是 mac phpstrom 配置步骤实例
打开 phpstrom 设置
Preferences | Languages & Frameworks | PHP | Debug
将 xdebug 区域中的 xdebug port 修改为 php.ini 中设置的 xdebug.remote_port
-
设置本地代理服务器Preferences | Languages & Frameworks | PHP | Debug | DBGp Proxy
IDE key = php.ini 中设置的xdebug.idekey, phpstrom 都是等于PHPSTROM
Host = 访问当前项目的主机(ip或者域名),建议域名
Port = 访问当前项目的域名
phpstrom 会自动为每个项目保存一份 DBGp Proxy 配置
-
设置访问当前项目的服务Preferences | Languages & Frameworks | PHP | Servers
Name = 随便写。laravel69
Host = DBGp Proxy中设置的Host
Port = DBGp Proxy中设置的Port
Debbuger = Xdebug
phpstrom 会自动为每个项目保存一份 Servers 配置
应用&保存以上配置
编辑项目debug调试配置
-
在项目窗口上方。点击Edit Configuration->点击+号-》选择php Web Page
Name = 顺便写
Server = 选择上面设置Servers
Start URL = 项目访问入口地址
Brower = Chrome 「后面需要添加 Chrome 的 xdebug 扩展」
这里的 Browser 是 phpstrom 后台在debug 时获取 Chrome 的session 用的
安装 Chrome 的 xdebug 扩展
在 Chrome 应用商店添加或者离线下载并拖拽添加, 具体百度
- 配置 Chrome
选择扩展的选项
在IDE key 中选择PhpStrom, Chrome 扩展默认的PhpStrom IDE key 等于PHPSTROM
开始调试
回到项目
在需要调试的位置打上断点(phpstrom 行号右侧位置)
-
在窗口右上方点击{类此虫}的debug图标,会自动跳转到默认浏览器(php Web Page 中配置的 Browser 无关)之后,会自动跳转到phpstrom中。在phpstrom下方窗口中显示断点开始的变量变化值,可以选择下一步,进入断点,下一个断点
点击调试图标后 phpstrom 时会获取 Chrome 的 session 用用于后面存在断点时使用xdebug功能。所以后面直接刷新页面只要存在断点并且开始在调试旁边的{监听按钮打开}即可开始调试
问题
-
访问页面时偶尔出现404
原因:在 php.ini 中配置加载 XDebug 扩展后,nginx 会出现代理到php的错误 解决: 1. 还需要调试功能,再次刷新即可,一次不行多次刷新 2. 暂时不需要或者不需要调试功能,可不加载XDebug 扩展