php MAGENTO2错误无效参数异常:作用域类型“”无效

ulmd4ohb  于 2023-02-15  发布在  PHP
关注(0)|答案(2)|浏览(156)
    • bounty已结束**。回答此问题可获得+100声望奖励。奖励宽限期将在20小时后结束。Carlos希望引起更多人关注此问题:更深入地了解可能导致该问题的MAGENTO2机制。

我目前正在尝试将MAGENTO(开源版本2.4.5)与IBM DB2 LUW集成。
我已经通过更改后端类(主要是PDO和ZEND)成功地将框架与DB2数据库进行了通信,到目前为止,我还没有接触任何模块代码,只是更改了ENV中的配置设置以适应DB2。
当我尝试运行存储,或编译或升级这些错误弹出:

InvalidArgumentException: Invalid scope type '' in /var/www/html/magento2/vendor/magento/framework/App/ScopeResolverPool.php:43

我已经做了一个调查的类。这背后的原因是处理的对象(这是一个拦截器)没有一个函数称为"getScope",所以它返回NULL,这是它导致错误的原因。证明:

目前这是我做的栈,它描绘了处理过的类和*/可能/*在所述类中的作用域(运行两次,抛出NULL):
https://www.dropbox.com/s/lvr5qcnjcqif7wb/PROBLEMASISTACK3.txt?dl=0
我正在回显ObjectManager/Factory/AbstractFactory.php中处理的类的字符串,最后一根稻草似乎是拦截器,它可能与配置类和配置数据有关,但是我已经验证了从数据库获得的数据是正确的(在Zend/Db/Adapter/Abstract.php中)(所有内容都是从MySQL导入的,作用域都是"默认"的,这在MySQL Magento OOTB集成中是有效的):

有什么问题吗?
编辑:我发现拦截器没有正确生成,我将它们更改为原始值,没有发现任何差异,我仍然有相同的错误:

更新(2023年9月2日):我发现通过Zend缓存解析作用域的结果是布尔值false。
我要去找出为什么缓存是不完整的。

e4eetjau

e4eetjau1#

您遇到的错误消息表明ScopeResolverPool类中的作用域类型存在问题。该问题可能与侦听器类或配置数据有关。根据您的调查,似乎已处理的对象(拦截器)没有“getScope”函数,这就是它返回NULL并导致错误的原因。此外,您提到过,通过Zend缓存解析作用域的结果是布尔值false,这可能表示该高速缓存不完整。
以下是您可以尝试解决此问题的几个步骤:
1.检查ENV文件中的配置数据,确保其正确且完整。
1.验证拦截器类是否正确生成并具有所需的功能。您提到您将它们改回了原始值,但仍然值得检查是否存在任何其他问题。
1.调试Zend缓存以查看其不完整的原因并尝试解决此问题。您可以尝试刷新该高速缓存或清除缓存数据以查看是否解决此问题。
1.检查ScopeResolverPool类和相关类,确保没有其他可能导致此问题的问题或错误。
1.最后,如果以上步骤都不能解决问题,您可以考虑联系Magento社区寻求进一步的帮助。可能有其他人遇到过类似的问题,可以提供更多的见解或解决方案。
我希望这能有所帮助,并祝你好运解决这个问题!

o2gm4chl

o2gm4chl2#

错误消息“参数无效异常:Magento 2中无效的示波器类型“”“通常是由示波器设置中的错误配置引起的。可能是配置数据中的示波器类型和/或代码的值丢失或不正确。您应该检查数据库并确保示波器设置定义正确。
还应检查是否存在任何可能干扰作用域解析过程的自定义模块或第三方扩展。可能需要更改某些代码才能使作用域解析正常工作。最后,检查该高速缓存设置并清除缓存,因为可能是过时的缓存数据导致了此问题。

相关问题