WAMP + VSCode + XDebug调试问题

4 篇文章 0 订阅
2 篇文章 0 订阅

CLI下的调试问题

WAMP是相当稳定的Windows下的Apache+Mysql+PHP开发环境
VSCode是当前比较常用的开发环境,有各种插件可以使用
PHP Debug (XDebug)是PHP环境下的调试器,这个插件可以在VSCode下使用

web环境调试设置

无论是wamp环境还是xampp环境,或者phpstudy环境,网上的帖子都比较多,思路总体如下

  • 安装集成开发包,确定软件环境相关版本
  • 确定并选择这几个组件的版本,尤其是php版本,下载对应的扩展dll(一般集成环境都带了)
  • 在php.ini中,加载此dll,并配置xdebug(几乎都用版本3系列了)相关内容(一般通过界面就可选择启用)
[xdebug]
zend_extension="c:/wamp64/bin/php/php7.4.26/zend_ext/php_xdebug-3.1.1-7.4-vc15-x86_64.dll"
xdebug.mode = debug
xdebug.output_dir ="c:/wamp64/tmp"
xdebug.show_local_vars=0
xdebug.log="c:/wamp64/logs/xdebug.log"
xdebug.log_level=7
xdebug.client_port = 9000
xdebug.idekey=PHPSTORM
xdebug.client_host=localhost
  • 把php.exe文件的路径设置到系统path中,就是要保证在命令行执行php -v有正确输出
  • 在vscode中安装xdebug插件,配置插件的相关设置
    在这里插入图片描述
    文件->首选项->设置->扩展->setting.json
"php.validate.executablePath": "C:\\wamp64\\bin\\php\\php7.4.26\\php.exe",
"php.debug.ideKey": "phpstorm",
  • 开启浏览器,加载浏览器PHP debug插件(360、qq浏览器,都是Chrome的,一般在设置或者插件仓库中能找到,也可以下载后安装)
    在这里插入图片描述

  • vscode进入调试模式(要设置php.exe的路径),设置断点

  • 在Apache中设置虚拟主机,或者把待调试文件放置到缺省目录下

  • 在浏览器中访问待调试的php文件

  • 如果前面的设置都没问题的话,则vscode会拦截中断,进入调试器状态

在wamp下,如上的配置都比较简单,因为xdebug在图形界面中即可启用,而且dll也已经给预安装了。所以前三步都很简单,后面的基本都没啥问题

附:vscode针对项目的调试器设置launch.json配置一般如此,这时执行Listen for Xdebug会一切正常

{
    "name": "Listen for Xdebug",
    "type": "php",
    "request": "launch",
    "port": 9000
},
{
    "name": "Launch currently open script",
    "type": "php",
    "request": "launch",
    "program": "${file}",
    "cwd": "${fileDirname}",
    "port": 9000,
    "runtimeArgs": [
        "-dxdebug.start_with_request=yes"
    ],
    "externalConsole": false,
    "env": {
        "XDEBUG_MODE": "debug",
        "XDEBUG_CONFIG": "client_port=${port}"
    }
},
{
    "name": "Launch Built-in web server",
    "type": "php",
    "request": "launch",
    "runtimeArgs": [
        "-dxdebug.mode=debug",
        "-dxdebug.start_with_request=yes",
        "-S",
        "localhost:80"
    ],
    "program": "${file}",
    "cwd": "${workspaceRoot}",
    "serverReadyAction": {
        "pattern": "Development Server \\(http://localhost:([0-9]+)\\) started",
        "uriFormat": "http://localhost:%s",
        "action": "openExternally"
    }

但是问题来了,我直接调试PHP文件,就是不进入断点,为何??Launch currently open script 进不了中断

CLI环境调试设置

我反复检测了半天,既然web模式下调试没问题,为何脚本模式就进入不了调试状态呢?
总以为是php.ini的设置问题,vscode中xdebug的设置问题,一头雾水。

后来发现了问题,原来wamp环境下PHP的配置文件使用的是另一个文件

在这里插入图片描述
是phpForApache.ini,而不是php.ini

在集成环境下的很多设置都在phpForApache.ini文件中,而当以php脚本cli模式运行程序时,是没有读取这个文件的,所以一直就进入不了调试环境

发现了问题就好办了

下载当前php版本的dll,设置到php.ini即可

  • https://xdebug.org/wizard去这个网站
    *在这里插入图片描述
    依次按照网页上面的指令执行即可,
    1、在命令行执行php -i
    2、把php -i的输出拷贝到中间空白区域
    3、点击下面按钮进行分析
    在这里插入图片描述

    然后就提示三步,
    1、下载给你提示的dll;
    2、把这个dll更名后放到php扩展路径下;
    3、在php.ini中加一行,启用扩展。

    照着执行即可

这时再直接执行一个独立的php脚本文件时,将会进入debug模式
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值