我有一个用Symfony 2.3完成的项目..网站。它使用MySQL,并且由于MySQL升级到8,它给我HTTP状态500错误,因为方言显然有所改变。
由于MySQL 8是相当新的,我猜测我必须升级该学说以使其与MySQL 8兼容。但这也意味着我必须升级Symfony。欢迎来到依赖地狱。
下一个问题是,我只有PHP 7.4可用。
该项目由
-包含7个控制器,固定装置,6个实体,事件监听器,数据转换器和翻译以及18个树枝模板的主捆绑包。
-包含基本布局和css / js文件的主题包
-扩展FOSUserBundle的用户捆绑包
我已经阅读了有关升级主要版本的文档。
我不知道最好的道路是什么。
a)升级到3.0,然后是4.0,然后是5.0
b)将捆绑软件复制到使用cli创建的新创建的v5.0项目中,并进行调整。
C) ?
我期望不高,但是也许有人处于同样的悲惨境地,并有一些技巧。
这是composer.json
{
"name": "symfony/framework-standard-edition",
"license": "MIT",
"type": "project",
"description": "The \"Symfony Standard Edition\" distribution",
"autoload": {
"psr-0": { "": "src/" }
},
"require": {
"php": ">=5.3.3",
"symfony/symfony": "2.8.*",
"doctrine/orm": "2.5.*",
"doctrine/doctrine-bundle": "1.3.*",
"twig/extensions": "1.0.*",
"symfony/assetic-bundle": "2.3.*",
"symfony/swiftmailer-bundle": "2.3.*",
"symfony/monolog-bundle": "2.3.*",
"sensio/distribution-bundle": "2.3.*",
"sensio/framework-extra-bundle": "2.3.*",
"sensio/generator-bundle": "2.3.*",
"incenteev/composer-parameter-handler": "~2.0",
"jms/security-extra-bundle": "dev-master",
"stof/doctrine-extensions-bundle": "~1.1@dev",
"friendsofsymfony/user-bundle": "dev-master#e770bfa2fd0fc665f55cd7cfeb34bddeffb892f4",
"doctrine/doctrine-fixtures-bundle": "dev-master",
"salavert/time-ago-in-words": "1.*"
},
"scripts": {
"post-install-cmd": [
"Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
],
"post-update-cmd": [
"Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
]
},
"config": {
"bin-dir": "bin"
},
"minimum-stability": "stable",
"extra": {
"symfony-app-dir": "app",
"symfony-web-dir": "web",
"incenteev-parameters": {
"file": "app/config/parameters.yml"
},
"branch-alias": {
"dev-master": "2.3-dev"
}
}
}
是否可以将理论切换到与MySQL 8兼容的DBAL,而无需升级Symfony?
最佳答案
我最近将其中一个项目从Symfony 3移到了4,也建议您将项目移至Symfony 4.4.3,因为它是最新的长期支持版本,比任何其他当前版本都要多。
您可以按照一些步骤来平稳地处理项目,首先,我建议您删除当前版本中的所有贬值,然后使用所需的Symfony版本和其他所需的依赖关系创建一个新的空项目,完成后将作曲家从新项目更新为旧版本并运行composer更新。由于缺少文件,方法,不同的名称空间和其他类似的东西,这将导致安装中断,修复这些问题并在git上提交更改。
提交对git的更改将使您可以轻松地在需要时回滚,因此您应该在进行少量更改后提交。
注意:-另外,我建议您按照上述步骤将2升级到3,并重复3到4。
关于php - 将symfony 2.8升级到5.0或更高版本以使mysql 8兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59978827/