Symfony-编写器更新-未找到依赖项注入配置类

Symfony-编写器更新-未找到依赖项注入配置类,symfony,dependency-injection,bundle,symfony3.x,symfony-3.4,Symfony,Dependency Injection,Bundle,Symfony3.x,Symfony 3.4,我们的项目部分由三个包组成,其中两个包由一个web后端应用程序和一个由我们客户的前端单页应用程序使用的相关API组成,最后一个“CoreBundle”是公共资源所在的位置 这些捆绑包都有DependencyInjection(DI)捆绑包子目录,但根本没有配置类,因为它们都没有任何特定的配置。我们使用文档中建议的DI组件,理论上本项目中没有可能影响配置加载机制的特殊情况。 到目前为止,它一直运行良好(Symfony 3.3.2) 为了将symfony/symfony从3.3.2更新到3.4,co

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

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

为了将symfony/symfony从3.3.2更新到3.4,composer安装后脚本Sensio\Bundle\DistributionBundle\composer\ScriptHandler::clearCache生成2个异常:

在Consistency.php第337行中:未找到类束\CoreBundle\DependencyInjection\Configuration\Configuration
在Consistency.php第285行中:未找到类束\CoreBundle\DependencyInjection\Configuration\Configuration

异常跟踪:

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
添加一个配置类,其
getConfigTreeBuilder()
方法返回一个新的(“空”)Treebuilder实例,使异常指向另一个包。我这样做是为了我们的三个bundle,现在例外情况是指出了Sensio自己的一个bundle

在Consistency.php第337行中:找不到Class Sensio\Bundle\DistributionBundle\DependencyInjection\Configuration\Configuration

以下是引发异常之前生成的一些编写器警告:

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缓存:clear
会引发相同的异常

现在,我们的bundles实现似乎与这个问题没有任何关系,我甚至不知道问题的根源是什么。也就是说,n/a:n/a处的行“
spl\u autoload\u call()”看起来很奇怪…
可能是一些Symfony依赖项应该强制到某些版本?(顺便说一句,没有提供潜在原因的有用提示)


谢谢你的帮助。

TL;DR:使用废弃的软件包
hoa/core

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

在Consistency.php第337行中:找不到Class Sensio\Bundle\DistributionBundle\DependencyInjection\Configuration\Configuration

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

我不知道您的确切设置,但我也收到了关于废弃的
hoa/core
软件包的警告,因此看到您的问题以及我们的设置之间的相似之处,我对此感到好奇,因为它指出
改用hoa/consistency。
consistency.php
类中存在错误。啊哈

因此,我只是在我的
composer.json
上花了很多时间,有一个过时的条目:

"hoa/regex": "~0.0"
这似乎需要废弃的
hoa/core
包。 对我来说,只需将此更改为

"hoa/regex": "~1.0"
解决了这个问题。但由于我不知道您的确切
composer.json
,我不知道您的捆绑包如何依赖于此包,因此更新到
hoa/consistency
可能不是那么容易

希望这有帮助

查看包(子)依赖关系,我最终发现导致错误的是
phpmetrics/phpmetrics
。只需升级版本“^1.10”→ “^2.3”
修复了我的问题。