如何为sensio框架控制器监听器启用注释阅读器服务?



在作曲家更新以修复我的应用程序使用的软件包上的一些漏洞后,我处理了一个错误:

服务"sensio_framework_extra.controller.listener"依赖于不存在的服务"annotation_reader">

如本答案所示,我尝试添加doctrine/annotations包,但它没有解决我的问题(包似乎已经安装(。

λ composer require doctrine/annotations
Using version ^1.8 for doctrine/annotations
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Restricting packages listed in "symfony/symfony" to "4.2.*"
Nothing to install or update

这是我composer.json使用的软件包:

"require": {
"php": "^7.1.3",
"ext-ctype": "*",
"ext-fileinfo": "*",
"ext-iconv": "*",
"ext-json": "*",
"doctrine/doctrine-fixtures-bundle": "^3.1",
"ekyna/payum-monetico-bundle": "^1.5",
"gedmo/doctrine-extensions": "^2.4",
"knplabs/knp-paginator-bundle": "^3.0",
"payum/offline": "^1.5",
"payum/paypal-express-checkout-nvp": "^1.5",
"payum/payum-bundle": "^2.3",
"php-http/guzzle6-adapter": "^2.0",
"sensio/framework-extra-bundle": "^5.1",
"stof/doctrine-extensions-bundle": "^1.3",
"symfony/asset": "4.2.*",
"symfony/console": "4.2.*",
"symfony/dotenv": "4.2.*",
"symfony/expression-language": "4.2.*",
"symfony/flex": "^1.1",
"symfony/form": "4.2.*",
"symfony/framework-bundle": "4.2.*",
"symfony/monolog-bundle": "^3.1",
"symfony/orm-pack": "1.*",
"symfony/process": "4.2.*",
"symfony/security-bundle": "4.2.*",
"symfony/serializer-pack": "1.*",
"symfony/swiftmailer-bundle": "^3.1",
"symfony/templating": "4.2.*",
"symfony/translation": "4.2.*",
"symfony/twig-bundle": "4.2.*",
"symfony/validator": "4.2.*",
"symfony/web-link": "4.2.*",
"symfony/webpack-encore-bundle": "^1.4",
"symfony/yaml": "4.2.*",
"twig/extensions": "^1.5",
"vich/uploader-bundle": "^1.8"
},
"require-dev": {
"codeception/codeception": "^2.5",
"codeception/c3": "2.*",
"friendsofphp/php-cs-fixer": "^2.14",
"php-coveralls/php-coveralls": "^2.1",
"phpmd/phpmd": "2.*",
"squizlabs/php_codesniffer": "*",
"symfony/debug-pack": "*",
"symfony/maker-bundle": "^1.11",
"symfony/profiler-pack": "*",
"symfony/test-pack": "^1.0",
"symfony/web-server-bundle": "4.2.*"
}

编辑: 我正在使用所有框架,我已经手动删除了缓存以确保没有问题。我也重新启动了我的开发计算机。最后,我通过将我的 github 项目部署到另一个目录中来解决这个问题,应用程序工作正常。我不关闭这个问题,因为我想在生产中出现问题时找到问题。

由于教义(或教义/注释(本身不注册服务(为什么会这样(,我查找了教义包,doctrine/doctrine-bundle提供了annotation_reader服务:https://github.com/doctrine/DoctrineBundle/blob/af8ac792c9b970ff2bc25b49ab9b31afd9e03dbf/Resources/config/orm.xml#L82

我在尝试创建新设置时遇到了非常相似的错误(The service "doctrine.orm.default_annotation_metadata_driver" has a dependency on a non-existent service "annotation_reader".(。 我记录了一些说明,并在学说之前尝试过作曲家安装ormfixtures(--dev(。 一旦我以正确的顺序完成此操作,一切都按预期进行。

我的具体示例来自 Twilio 的说明,其中按以下顺序包含以下命令:

composer req --dev maker ormfixtures fakerphp/faker
composer req doctrine twig

当我将它们反转为以下顺序时,它起作用了:

composer req doctrine twig
composer req --dev maker ormfixtures fakerphp/faker

我在 Symfony 4.4 的作曲家更新后遇到了同样的问题。 这是因为我用"教义\持久性"代替了"Doctrine\Common",而不是"Doctrine\Common\Persistence"。

换句话说:不管你为什么会出现这个错误,它来自代码中一个损坏的命名空间。

这是SensioFrameworkExtraBundle的官方链接:https://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/index.html

最新更新