You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Magento 2.2.4执行setup:di:compile报错:VirtualLogger源类不存在

解决Magento 2.2.4 setup:di:compile 时的VirtualLogger生成错误

你遇到的这个[RuntimeException] Source class "\Magento\Payment\Model\Method\Virtual" for "Magento\Payment\Model\Method\VirtualLogger" generation does not exist错误,多半是核心文件缺失、依赖异常或者模块冲突搞出来的,我给你几个靠谱的排查方案:

1. 先确认核心Payment模块文件是否完整

首先去检查Magento\Payment\Model\Method\Virtual这个类的文件在不在,路径是:
vendor/magento/module-payment/Model/Method/Virtual.php

  • 如果文件找不到,说明Composer安装时这个模块的文件损坏或者漏装了,执行下面的命令重装依赖:
    composer install --no-dev
    
    要是只想单独修复这个模块,也可以这么搞:
    composer require magento/module-payment:2.2.4 --no-update
    composer update magento/module-payment
    

2. 排查第三方/自定义模块的冲突

有些第三方支付模块可能会重写或者错误引用Virtual类,导致编译时卡壳:

  • 先把所有第三方模块禁用掉,执行这条命令:
    php bin/magento module:disable $(php bin/magento module:status | grep -v Magento | grep -v List | grep -v None)
    
  • 然后再试一次编译:
    php bin/magento setup:di:compile
    
  • 如果这次编译成功了,就逐个重新启用第三方模块,每次启用后都跑一遍编译,找到那个搞事情的模块,要么联系开发者修,要么自己检查它的重写配置是不是写错了。

3. 修复文件权限

有时候权限不对会导致Magento读不到核心文件,执行下面的命令把权限设对(假设你的Web服务器用户是www-data,不是的话换成你自己的):

sudo chown -R www-data:www-data .
find . -type f -exec chmod 644 {} \;
find . -type d -exec chmod 755 {} \;
chmod u+x bin/magento

4. 刷新Composer自动加载

自动加载文件出问题也会导致类找不到,先执行这个:

composer dump-autoload -o

然后再清理一遍缓存和生成目录(你之前已经做过,但再跑一遍更稳妥):

rm -rf var/di/* var/generation/* var/cache/* var/log/* var/page_cache/* var/session/* var/view_preprocessed/* pub/static/*
php bin/magento cache:flush

之后再试编译。

5. 检查自定义的VirtualLogger类

如果你的项目里有自己写的Magento\Payment\Model\Method\VirtualLogger类,仔细检查它的父类引用,确保extends的是\Magento\Payment\Model\Method\Virtual,别写错路径了。

按照上面的步骤走,基本能搞定这个问题。要是还不行,就试试重新下载Magento 2.2.4的安装包,替换vendor目录下的magento核心文件,再重新编译。

内容的提问来源于stack exchange,提问作者nb171994

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:42:28