php - Symfony 2.8 和 PHP 7.4 : Warning: "continue" targeting switch is equivalent to "break". Composer 是最新版本

标签 php symfony composer-php symfony-2.8

我正在尝试更新 symfony 2.8 应用程序以使用 PHP 7.4,但是当我尝试清除缓存 php app/console cache:clear 时,我收到以下警告:

[Symfony\Component\Debug\Exception\ContextErrorException]
Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"?

这会导致“脚本以非零代码退出”。这搞乱了 Jenkins 的整个自动化流程。我运行的解决方案通常是一个简单的 Composer 更新,但是在我执行此操作并将 Composer 更新到最新版本(当前为 2.0.7)后,错误仍然存​​在,并且我确信这不是 Composer 问题,因为此警告甚至仅使用 symfony 的 cache:clear 命令也会崩溃。我正在考虑从这个特定的版本分支创建我自己的 symfony 分支并自己修复错误,但我找不到此 continue 发生的确切位置。

如何消除这个错误,或者至少如何调试整个过程,以便我自己修复错误?

感谢任何帮助。预先感谢!

编辑:

这是运行php app/console cache:clear --verbose后返回的消息。我没有看到任何潜在的继续错误的迹象。你们中有人看到过这样的事情吗?

Exception trace:
() at 
/var/www/html/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php:2636
Symfony\Component\Debug\ErrorHandler->handleError() at
/var/www/html/vendor/symfony/symfony/src/Symfony/Component/Debug/DebugClassLoader.php:169

 require() at /var/www/html/vendor/symfony/symfony/src/Symfony/Component/Debug/DebugClassLoader.php:169
 Symfony\Component\Debug\DebugClassLoader->loadClass() at n/a:n/a
 spl_autoload_call() at /var/www/html/vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php:160
 Doctrine\ORM\EntityManager->__construct() at /var/www/html/vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php:850
 Doctrine\ORM\EntityManager::create() at /var/www/html/app/cache/dev/appDevDebugProjectContainer.php:1711
 appDevDebugProjectContainer->getDoctrine_Orm_DefaultEntityManagerService() at /var/www/html/symfony/symfony/src/Symfony/Component/DependencyInjection/Container.php:295
 Symfony\Component\DependencyInjection\Container->get() at /var/www/html/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/ManagerRegistry.php:35
 Symfony\Bridge\Doctrine\ManagerRegistry->getService() at /var/www/html/vendor/doctrine/common/lib/Doctrine/Common/Persistence/AbstractManagerRegistry.php:183
 Doctrine\Common\Persistence\AbstractManagerRegistry->getManager() at /var/www/html/app/cache/dev/appDevDebugProjectContainer.php:9401
 appDevDebugProjectContainer->getFosUser_EntityManagerService() at /var/www/html/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Container.php:295
 Symfony\Component\DependencyInjection\Container->get() at /var/www/html/app/cache/dev/appDevDebugProjectContainer.php:2945
 appDevDebugProjectContainer->getFosUser_UserManagerService() at /var/www/html/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Container.php:295
 Symfony\Component\DependencyInjection\Container->get() at /var/www/html/app/cache/dev/appDevDebugProjectContainer.php:9219
 appDevDebugProjectContainer->getValidator_BuilderService() at /var/www/html/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Container.php:295
 Symfony\Component\DependencyInjection\Container->get() at /var/www/html/app/cache/dev/appDevDebugProjectContainer.php:9201
 appDevDebugProjectContainer->getValidatorService() at /var/www/html/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Container.php:295
 Symfony\Component\DependencyInjection\Container->get() at /var/www/html/app/cache/dev/appDevDebugProjectContainer.php:8349
 appDevDebugProjectContainer->getSonata_Adminbundle_Command_ExplainadmincommandService() at /var/www/html/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Container.php:295
 Symfony\Component\DependencyInjection\Container->get() at /var/www/html/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Console/Application.php:147
 Symfony\Bundle\FrameworkBundle\Console\Application->registerCommands() at /var/www/html/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Console/Application.php:112
 Symfony\Bundle\FrameworkBundle\Console\Application->all() at /var/www/html/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Console/Application.php:66
 Symfony\Bundle\FrameworkBundle\Console\Application->doRun() at /var/www/html/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:117
 Symfony\Component\Console\Application->run() at /var/www/html/app/console:28

最佳答案

不再支持 Symfony 2.8,并且它尚未与 PHP 7.4 兼容(因为这是在 Symfony 2.8 的最后一次修复之后发布的)。您可以检查错误发生的具体位置并尝试修复它(通常完整的错误消息应包含此类信息),或者您也必须将 Symfony 2.8 更新到受支持的版本。

编辑:在您提供更多详细信息后,我假设您在 v2.5.14 中使用 doctrine/orm。该版本于 2017 年 12 月发布,是与 Symfony 2.8 兼容的最新版本。由于 PHP 7.3(其中弃用了带有 switchcontinueintroduced )于 2018 年 12 月发布,因此此类问题尚未在 PHP 7.3 中得到修复也就不足为奇了。 ORM 包。

您应该坚持使用 PHP 7.2,或者将 Symfony、Doctrine 以及您正在使用的任何 bundle 更新为最新版本。

关于php - Symfony 2.8 和 PHP 7.4 : Warning: "continue" targeting switch is equivalent to "break". Composer 是最新版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65091399/

相关文章:

php - 如果 use_controller 设置为 true,则 Assetic 不起作用

php - 找不到服务提供商 Laravel 5.0

php - 安装 Composer 时遇到问题

PHP MySQL 存储过程输出仍然很慢(几乎使浏览器崩溃)

php - 报告引擎指南(Pentaho、JasperReports、BIRT)

php - Stripe "No such token: "错误

php - 在MYSQLI中插入未指定长度的数组

symfony - DoctrineExtensions (l3pp4rd) 或 EntityAudit (simplethings)

symfony - sonata admin 一对多和多对多形式

php - 如果 Composer 在我的 Web 服务器根目录之外,如何包含它的自动加载?