我想将 symfony 2.8
项目升级到 3.0
,我将 composer.json
中的版本更改为 3.0.*
但是在完成作曲家更新后,我在控制台中出现以下错误:
[RuntimeException]执行“'cache:clear --no-warmup'”命令时发生错误:PHP致命错误:/ var / www / html / t /中找不到类'Symfony \ Component \ HttpKernel \ Kernel'第6行的EcoPro / app / AppKernel.php
1 回答
听起来你的代码无法从Symfony找到Kernel类 . 既然它应该仍然存在,正如你在_1273166中看到的那样,我认为在你的更新期间出了问题 .
我建议先运行
composer diagnose
,看看作曲家本身是否是最新的,你的composer.json
在语法上是否有效 . 下一步,您应该通过运行composer show
来验证依赖项的当前版本 . 输出应该如下所示:这应该可以帮助您查看更新是否确实有效 . 如果一切看起来都很好,我会走安全路线并将你的代码恢复到2.8,然后像下面解释的那样进行更新,而不是更改composer.json!
首先确保修复了现有应用程序中的所有弃用 . 您可以使用UPGRADE-document作为参考,但也可以运行测试和check the logs for deprecated calls . 使用3.3会变得更容易,因为这些版本有一个单独的deprecation-log,您可以在
var/log
中找到其他日志文件 .一旦你有理由确定代码将使用新的主要版本运行,只需使用以下composer命令:
这只是为了确保我们在此过程中不会意外安装任何4.0的Symfony组件 . 一旦您想升级到Symfony 4,您可以使用
composer remove symfony/lts
删除此依赖关系,然后运行update .在lts元软件包到位后,您可以更新Symfony本身:
如果您真的想要一步一步地更新到您的依赖项支持的最新3.x或使用更严格的约束:
如果您愿意,您也可以一步完成这两件事:
这应该足以让Symfony在新版本上使用 . 您可能还有其他依赖项,例如Doctrine或您安装的一些bundle . 有一些有用的命令可用于更新它们 .
首先,您一次只能更新一个依赖项:
当您添加选项
--with-dependencies
时,它还将更新doctrine / orm的依赖项 .您始终可以使用依赖项和可选的版本来询问
composer why
或composer why-not
,以检查依赖项存在的原因以及它不会更新的原因 . 只需输入composer help why-not
即可查看如何使用它 . 当您想要更新诸如doctrine / orm之类的依赖项时,这尤其有用,但是composer会抛出一个无法执行此操作的错误 .