Magento 2.4.4执行setup:di:compile时类不存在错误求助
解决Magento 2.4.4
setup:di:compile 找不到SerializedToJson类的问题 检查核心代码中是否存在该类
直接前往项目的vendor/magento/framework/DB/DataConverter/目录,确认是否存在SerializedToJson.php文件。Magento 2.4.4核心框架默认包含这个类,若文件缺失,说明composer依赖安装不完整或文件被误删。重新安装/更新composer依赖
执行以下命令修复依赖,确保核心文件完整:composer install --no-dev若仅需更新框架包,可单独执行:
composer update magento/framework --no-dev排查自定义模块与第三方扩展的引用问题
该类可能被自定义模块或第三方扩展错误引用,或存在兼容性问题:- 用全局搜索定位所有引用该类的文件:
grep -r "Magento\Framework\DB\DataConverter\SerializedToJson" app/code vendor/ - 若为自定义模块中的引用,检查类名拼写是否正确,以及模块是否适配Magento 2.4.4版本。
- 若为第三方扩展,尝试禁用扩展后重新编译验证问题是否消失:
bin/magento module:disable Vendor_Module
- 用全局搜索定位所有引用该类的文件:
检查DI配置文件的错误引用
查找所有di.xml文件中是否存在对该类的错误配置:grep -r "SerializedToJson" app/code/*/etc/ vendor/*/etc/若发现错误的依赖配置或拼写问题,修正后再执行编译。
手动生成缺失的类文件(临时方案)
若确认核心框架确实缺少该类,可手动创建vendor/magento/framework/DB/DataConverter/SerializedToJson.php文件,内容如下(对应Magento 2.4.4官方代码):<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\Framework\DB\DataConverter; use Magento\Framework\DB\DataConverterInterface; use Magento\Framework\Serialize\SerializerInterface; /** * Convert serialized data to JSON format. */ class SerializedToJson implements DataConverterInterface { /** * @var SerializerInterface */ private $serializer; /** * @param SerializerInterface $serializer */ public function __construct(SerializerInterface $serializer) { $this->serializer = $serializer; } /** * Convert serialized string to JSON. * * @param string $value * @return string|null */ public function convert($value) { if ($value === null || $value === '') { return null; } try { $data = $this->serializer->unserialize($value); return json_encode($data, JSON_THROW_ON_ERROR); } catch (\Exception $e) { return null; } } }创建完成后重新执行
bin/magento setup:di:compile。修复文件权限
确保vendor、generated等目录权限正确:chmod -R 775 var generated vendor pub/static pub/media app/etc chown -R www-data:www-data . # 根据服务器实际用户组调整
内容的提问来源于stack exchange,提问作者Tomaz
相关产品推荐
相关产品推荐

