【问题标题】:How to properly update Symfony3.3 to Symfony4.X?如何正确更新 Symfony3.3 到 Symfony4.X?
【发布时间】:2018-06-16 10:30:44
【问题描述】:

解释:

我无法将 symfony3 更新到 symfony4,无论我如何修复它们都会引发各种不同的错误。

我尝试过的:

我正在关注the official documentation 的主要更新,我已确保我有 0 次弃用。

我更新了我的composer.json 如下:

{
    "...": "...",

    "require": {
        "symfony/symfony": "^4.0",
    },
    "...": "..."
}

错误:

您的要求无法解决为一组可安装的 包。

问题 1 - 结论:删除 symfony/assetic-bundle v2.8.2 - 结论:不要安装 symfony/assetic-bundle v2.8.2 - 结论:不要安装 symfony/symfony v4.0.3 - 结论:不要安装 symfony/symfony v4.0.2 - symfony/assetic-bundle 的安装请求(锁定在 v2.8.2,要求为 ^2.8)-> 满足 symfony/assetic-bundle[v2.8.2].

现在,我继续卸载 symfony/assetic-bundle,但它给出了以下相同的错误:

  • “symfony/swiftmailer-bundle”
  • “sensio/framework-extra-bundle”
  • “sensio/分发包”
  • “incenteev/composer-parameter-handler”

然后当没有什么要删除时(此时非常令人沮丧),它只是说:

问题 1 - 结论:不要安装 symfony/symfony v4.0.3 - 结论:不要安装 symfony/symfony v4.0.2 - 结论:不要安装 symfony/symfony v4.0.1 - sensio/generator-bundle v3.1.7 需要 symfony/yaml [...]

  • sensio/generator-bundle 的安装请求(锁定在 v3.1.7,要求为 ^3.0)-> 可满足 sensio/generator-bundle[v3.1.7]。

问题:

如何正确解决错误(如上所示)以及如何正确将 symfony 更新到 4.0?

composer.json sn-p:

"require": {
        "php": ">=5.5.9",
        "doctrine/doctrine-bundle": "^1.6",
        "doctrine/orm": "^2.5",
        "incenteev/composer-parameter-handler": "^2.0",
        "sensio/distribution-bundle": "^5.0.19",
        "sensio/framework-extra-bundle": "^3.0.2",
        "symfony/monolog-bundle": "^3.1.0",
        "symfony/polyfill-apcu": "^1.0",
        "symfony/swiftmailer-bundle": "^2.3.10",
        "symfony/symfony": "^4.0",
        "twig/twig": "^1.0||^2.0"
    },
    "require-dev": {
        "sensio/generator-bundle": "3.1.7",
        "symfony/phpunit-bridge": "^3.0"
    },

【问题讨论】:

  • 如果您对 symfony 还没有太大的信心,最好先升级到 3.4,然后在 symfony 分析器的帮助下一一修复所有的弃用。 PS:确保使用的所有库/捆绑版本都已经兼容4.*
  • 我曾多次尝试按照这些说明从 3.4 跳转到 4.0,但从未成功。我要做的是降低一个新的 4.0 flex 骨架,然后跟随:Upgrading Existing Applications to Flex。只需将 3.4 应用程序中的内容复制/粘贴/重命名到新结构即可。无论如何都需要这样做,因为在保持 S3 文件结构的同时升级到 S4 几乎没有意义。
  • 如果确实想继续尝试您的作曲家更改,请注意 sensio 生成器包已(基本上)被替换为 4.0 中的制造商包。 symfony.com/doc/current/bundles/SymfonyMakerBundle/index.html

标签: symfony symfony4


【解决方案1】:

在这个阶段,我创建了 Symfony4 骨架并复制粘贴了我之前项目中的文件。这是一项乏味的任务,因为有些事情确实发生了变化。

以下是可能有助于升级的基本步骤列表:

  1. 关注 Symfony documentation 以摆脱代码中可能存在的任何弃用

  2. 创建 Symfony4 骨架

  3. 将您的特定文件复制粘贴到各自的位置。
  4. “Bundles”在某种意义上是不存在的,所以您的目录应该是这样的:src/Controllerssrc/Services 等。
  5. 更新您的namespaces,默认为App\ControllerApp\Services等。
  6. 数据库连接信息放在根目录下的.env文件中。

请随意编辑这篇文章以提供更多有价值的信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-11
    • 2020-09-20
    • 1970-01-01
    • 1970-01-01
    • 2013-02-07
    • 2018-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多