PHPStorm 中 cli 如何在框架(Yii、Laravel)中开启 Debug

前言

在日常开发中经常使用 var_dump() + die 的方式进行断点调试,虽然可以满足业务需求但不够方便,存在很多缺点例如 断点的代码影响代码结构, 若该代码没有注释则会直接影响代码程序, 若删除对应代码后续还要使用需要重复操作等等问题, 而推荐使用 Xdebug 会完美解决上述问题,下面就针对 cli 下以及使用 postman 如何配合 Xdebug 进行使用处理。

安装 Xdebug

  1. 打开 https://xdebug.org/wizard,按照如下图例进行操作
    在这里插入图片描述
    这里它会根据你的环境、PHP 版本以及相关扩展缺失情况,提供 .dll / .so 后缀的拓展文件,扩展的添加语句,根据流程操作即可。
  2. 校验扩展安装情况,输入 php -m, 若显示如下内容则视为扩展安装成功。
    在这里插入图片描述
    若 windows 环境下出现 php -m 出现以下错误, 在 php.ini 文件中只需添加 zend_extension = xdebug.dll,无需追加 extension = xdebug.dll,就可以解决。
PHP Warning:  Xdebug MUST be loaded as a Zend extension in Unknown on line 0

Warning: Xdebug MUST be loaded as a Zend extension in Unknown on line 0
PHP Warning:  Module 'xdebug' already loaded in Unknown on line 0

Warning: Module 'xdebug' already loaded in Unknown on line 0

相关 Xdebug 的配置说明

相关配置说明地址, 我这边的配置如下图所示

[Xdebug]
zend_extension = C:\xampp7\php\ext\php_xdebug.dll
;启用步骤调试。这可用于在代码运行时单步执行代码,并分析变量的值。
xdebug.mode=debug
;指定传递给DBGp调试器处理程序的IDE Key。
xdebug.idekey=PHPSTORM
;是否开启远程调试
xdebug.remote_enable = 1
;指定远程调试的处理协议
xdebug.remote_handler = dbgp
;可以设为req或jit,req表示脚本一开始运行就连接远程客户端,jit表示脚本出错时才连接远程客户端。
xdebug.remote_mode=req
;指定远程调试的主机名
xdebug.remote_host = localhost
;指定远程调试的端口号
xdebug.remote_port=9000

PHPStrom 的配置说明

  1. 开启 Xdebug 的功能
    在这里插入图片描述

  2. 定义服务器配置
    在这里插入图片描述

  3. 验证 Web 服务器上的调试器配置在这里插入图片描述

Cli 环境下实现 Debug 调试

原因:因为 PHPStorm 的脚本需要选择执行文件, 而 Yii、Laravel 框架则需要执行 php yii 这类的命令才能执行,因此无法实现断点,所以我们需要使用一些小技巧。

  1. 创建执行控制台命令的 php 文件, 如下所示
<?php
	$command = 'php yii';
	foreach ($argv AS $k => $v) {
    
    
		if($k > 0) $command .= ' '.$v;
	}

	system($command);
  1. 配置 运行/调试配置,如下所示,如果需要配置追加参数, demo/test 0 1 即可。
    在这里插入图片描述

  2. 打断点
    在这里插入图片描述

  3. 运行并且查看 Debug 及结果,如下图所示
    在这里插入图片描述

在这里插入图片描述

WebAPI 实现 Debug 调试

开启 PHP侦听连接,如下图所示
在这里插入图片描述

使用 chrome 浏览器的话,可以安装 Xdebug helper 插件,然后开启 debug 即可。

如果要使用 postman 这类的工具的话, 可以设置下 Cookies, 如下图所示
在这里插入图片描述
相关 cookies 参数

XDEBUG_SESSION=XDEBUG_ECLIPSE; Path=/;

tips: 如果发现不对,可以按照 chrome 的插件安装 Xdebug helper,开启 debug 后,访问自己的域名,查看对应 Cookies 信息,即可知道结果, 然后按照上述流程进行操作即可看到断点结果。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43832080/article/details/127426968