首页 文章

Symfony - 作曲家更新 - 找不到依赖注入配置类

提问于
浏览
2

我们的项目部分由三个捆绑组成,其中两个包括Web后端应用程序和客户前端单页应用程序使用的相关API,最后一个“CoreBundle”是公共资源所在的位置 .

这些bundle都有一个DependencyInjection(DI)bundle子目录,但根本没有Configuration类,因为它们都没有任何特定的配置 . 我们使用文档中建议的DI组件,理论上该项目中没有可能影响配置加载机制的特殊情况 .
这一直运作良好直到现在(Symfony 3.3.2) .

In an intent of updating symfony/symfony from 3.3.2 to 3.4, composer post-install script Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache generates 2 exceptions:

在Consistency.php第337行:类Bundle \ CoreBundle \ DependencyInjection \ Configuration \ Configuration未找到Consistency.php第285行:Class Bundle \ CoreBundle \ DependencyInjection \ Configuration \ Configuration not found

异常跟踪:

Exception trace:
 Hoa\Core\Consistency\Consistency::autoload() at n/a:n/a
 call_user_func() at /var/www/back-portal/vendor/symfony/symfony/src/Symfony/Component/Debug/DebugClassLoader.php:146
 Symfony\Component\Debug\DebugClassLoader->loadClass() at n/a:n/a
 spl_autoload_call() at n/a:n/a
 class_exists() at /var/www/back-portal/vendor/symfony/symfony/src/Symfony/Component/Config/Resource/ClassExistenceResource.php:78
 Symfony\Component\Config\Resource\ClassExistenceResource->isFresh() at /var/www/back-portal/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/ContainerBuilder.php:351
 Symfony\Component\DependencyInjection\ContainerBuilder->getReflectionClass() at /var/www/back-portal/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Extension/Extension.php:84
 Symfony\Component\DependencyInjection\Extension\Extension->getConfiguration() at /var/www/back-portal/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/MergeExtensionConfigurationPass.php:63
 Symfony\Component\DependencyInjection\Compiler\MergeExtensionConfigurationPass->process() at /var/www/back-portal/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DependencyInjection/MergeExtensionConfigurationPass.php:39
 Symfony\Component\HttpKernel\DependencyInjection\MergeExtensionConfigurationPass->process() at /var/www/back-portal/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/Compiler.php:141
 Symfony\Component\DependencyInjection\Compiler\Compiler->compile() at /var/www/back-portal/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/ContainerBuilder.php:760
 Symfony\Component\DependencyInjection\ContainerBuilder->compile() at /var/www/back-portal/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php:625
 Symfony\Component\HttpKernel\Kernel->initializeContainer() at /var/www/back-portal/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php:137
 Symfony\Component\HttpKernel\Kernel->boot() at /var/www/back-portal/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Console/Application.php:63
 Symfony\Bundle\FrameworkBundle\Console\Application->doRun() at /var/www/back-portal/src/Component/MultiApp/MultiAppConsoleApplication.php:35
 Component\MultiApp\MultiAppConsoleApplication->doRun() at /var/www/back-portal/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:129
 Symfony\Component\Console\Application->run() at /var/www/back-portal/bin/console:31

添加一个Configuration类,其 getConfigTreeBuilder() 方法返回一个新的("empty")Treebuilder实例,使异常指出另一个bundle . 我为我们的三个捆绑包做了这个,现在异常指出了一个Sensio自己的捆绑包 .

在Consistency.php第337行:未找到类Sensio \ Bundle \ DistributionBundle \ DependencyInjection \ Configuration \ Configuration ...

以下是在抛出异常之前产生的一些Composer警告:

Dependency "symfony/polyfill-apcu" is also a root requirement, but is not explicitly whitelisted. Ignoring.
…
Package hoa/core is abandoned, you should avoid using it. Use hoa/consistency instead.
Package guzzle/guzzle is abandoned, you should avoid using it. Use guzzlehttp/guzzle instead.

执行 rm -rf var/cache/* 没有帮助 .
仅运行 bin/console cache:clear 会抛出同样的异常 .

既然我们的捆绑实现似乎与这个问题没有任何关系,我甚至不太了解可能是问题的根源 . 也就是说,行“ spl_autoload_call() at n/a:n/a ”看起来很奇怪......可能是某些Symfony依赖应该强制到某些版本......? (顺便说一句changelog没有提供有用的暗示可能的原因)

谢谢您的帮助 .

1 回答

  • 0

    TL;DR: This seems to be a problem using the abandoned package hoa/core.

    我可能会在这个问题上找到解决方案,因为我遇到了运行 php bin/console 导致错误的相同问题

    在Consistency.php第337行:未找到类Sensio \ Bundle \ DistributionBundle \ DependencyInjection \ Configuration \ Configuration ...

    在我将Symfony应用程序从2.8升级到最新的3.4版本之后 .

    我不知道你的确切设置,但我也有关于被遗弃的 hoa/core 包的警告,所以在这里看到你的问题以及我们的设置之间的相似之处,我对此感到好奇,因为它说明了 Use hoa/consistency instead. Consistency.php 上课 . 啊哈!

    所以我只是在我的 composer.json 上花了很多钱,而且有一个过时的条目:

    "hoa/regex": "~0.0"
    

    这似乎需要废弃的 hoa/core 包 . 对我来说,只需将其更改为

    "hoa/regex": "~1.0"
    

    解决了这个问题 . 但是由于我不知道你的确切 composer.json ,我不知道你的软件包如何依赖这个软件包,所以你可能不那么容易更新到 hoa/consistency .

    希望这可以帮助!

相关问题