php远程调试之 xdebug (含cli模式)
2021/9/17 1:04:48
本文主要是介绍php远程调试之 xdebug (含cli模式),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
找了很久php的xdebug扩展远程调试教程,大都已经过时,现在记录下php配置xdebug远程调试的过程。
本次教程时间2021/9/16
php版本: php7.4 nts,示例安装xdebug3 版本
-
安装xdebug
关于windows下的安装
官网下载:Xdebug: Downloads
找到需要的版本下载
解压下载好的压缩包,提取dll文件,放到php的ext扩展目录下 ,
dll文件例如: php_xdebug-3.1.0beta2-7.4-vc15-nts-x86_64.dll
Ps:有可能需要php.ini 中ext指定扩展目录,一般不用设置
如果你不知道下载什么版本,那就去 https://xdebug.org/wizard
在命令行输入 php -i 或者打印出 phpinfo() ,复制里面全部的文本内容到链接中输入框,官方会提供下载指引。
安装xdebug后,接下来就是修改php.ini配置文件了
新版xdebug3的配置已经变了,旧的教程已经不合适了,会在php_error.log报错的
Xdebug3需要在php.ini中添加以下配置
Ps:记得改成自己需要的配置
;指定xdebug扩展位置 zend_extension=xdebug-3.1.0beta2-7.4-vc15-nts-x86_64 ;配置xdebug [xdebug] ;配置xdebug主机地址 xdebug.client_host = localhost ;监听端口 xdebug.client_port = 9103 ;idekey xdebug.idekey = PHPSTORM ;调试模式建议设置成debug可以打断点调试,默认是default xdebug.mode = debug
以上就是最少的xdebug配置了,想知道更多xdebug配置介绍可以去官网 Xdebug: Documentation » All settings ,里面都有介绍什么配置有什么功能。
最后可以在命令行输入php -m 查看是否安装xdebug成功
关于linux下的安装
官网首页都有Linux安装示例了,自己看 Xdebug: Documentation » Installation
-
配置phpstorm
示例phpstorm版本2021.2.1
debug配置
设置主机映射,用于在浏览器访问时phpstorm能够根据url链接路径映射到实际的运行文件,可设置多个,不同的项目使用不同的设置。根据实际情况设置,我这里设置一个就行行了。用的是thinkphp6,指向的是项目根目录。(其实我自己也奇怪为什么不是指向public目录下,求大佬解释)
配置好后就可以打上断点,点击小甲虫调试图标开始调试了,出现上面的情况就代表可以调试了。
接下来可以在浏览器使用以下两种方式调试:
方法一:
浏览器url 后面加上XDEBUG_SESSION_START=1 首先 ,这个 XDEBUG_SESSION_START 是必须的,但是他的值是可以随便填写的。
如:https://xxx.com?XDEBUG_SESSION_START=666
参考文档: https://xdebug.org/docs/all_settings#mode
方法二:
在浏览器安装 Xdebug helper 调试插件,至于怎么安装,请自行百度。
这个工具会自动帮你设置,只不过他是在 cookie 里面设置,依赖cookie。
安装完成后,需要先配置,右键扩展栏的虫子图标,选择选项。
大功告成,现在可以开始调试了,使用浏览器访问url会自动停在断点处,有时候调试自动断开 nginx 返回 504这是因为你没有调整 PHP 和 FPM 以及 Nginx 的最大执行时间,修改到一个较大的值即可。
参考文档:
https://segmentfault.com/a/1190000019775071
PhpStorm配置Xdebug调试 - 艾薇-Ivy - 博客园
如果你想对命令行cli运行的脚本进行调试,可以这样配置
创建与选中php scripti脚本调试配置后点击小虫子即可开始调试,可以在脚本中打断点了!!
注意:xdebug只能调试传统php开发模式,不能调试Swoole与Workerman
等什么时候有空再发docker下的xdebug/swoole远程调试教程,如果会变通的话上述配置是可以修改为远程调试服务器的教程的,等有空再发详细教程吧
基佬qq群: 244101999 ,年轻人专用,脾气暴躁的勿扰。
这篇关于php远程调试之 xdebug (含cli模式)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-19php8的协程和hyperf的协程有什么区别?-icode9专业技术文章分享
- 2024-12-19php8 的fiber是什么?-icode9专业技术文章分享
- 2024-12-05怎么在php8,1 里面开启 debug?-icode9专业技术文章分享
- 2024-12-05怎么在php8,1 里面开启 debug?-icode9专业技术文章分享
- 2024-11-29使用PHP 将ETH账户的资产汇集到一个账户
- 2024-11-23怎么实现安卓+php 热更新方案?-icode9专业技术文章分享
- 2024-11-22PHP 中怎么实现判断多个值是否为空、null 或者为 false?-icode9专业技术文章分享
- 2024-11-11开源 PHP 商城项目 CRMEB 二次开发和部署教程
- 2024-11-09怎么使用php在kaufland平台刊登商品?-icode9专业技术文章分享
- 2024-11-05PHP的抽象类和接口是什么,有什么区别-icode9专业技术文章分享