【问题标题】:Existing Symfony project and confusing composer.json packages need different versions of Symfony现有的 Symfony 项目和令人困惑的 composer.json 包需要不同版本的 Symfony
【发布时间】:2013-09-23 10:43:57
【问题描述】:

我正在尝试扩展现有的 Symfony 应用程序,但 composer.json 没有任何意义。

"symfony/symfony": "2.1.*"

导致错误,因为 2.1.* 不是可解析的版本号,这表明程序员没有费心更新文件或使用它。

然后我尝试将其更改为:

"symfony/symfony": "2.1.12"

然后它失败了,因为:

mopa/bootstrap-bundle dev-master requires symfony/symfony ~2.3-dev 
jms/di-extra-bundle 1.1.0-RC requires symfony/framework-bundle 2.1.* 

这表明我可以安装 bootstrap 或 jms,因为一个需要 symfony 2.1,另一个需要 2.3,但在 composer.phar 我看到:

    "jms/di-extra-bundle": "1.1.*",
    "mopa/bootstrap-bundle": "dev-master",

在生产服务器中,我看到供应商有一个 jsm 和 mopa 子目录,在 vendor/symfony/symfony 下,我能找到的最高更改日志是 CHANGELOG-2.1.md,表明使用了某些版本的 Symfony 2.1(只有 ftp访问所以无法运行命令来检查版本)。

我想知道如何才能安装它,因为它每次在 Symfony 版本上都没有得到解决。

另一件事是;我应该解决这个问题吗?如果其中一个包由于 Symfony 版本错误而无法运行,那么首先安装它有什么意义?

【问题讨论】:

    标签: php symfony composer-php


    【解决方案1】:

    如果你是从以前的 symfony 版本更新,你必须更新所有依赖项。所以看https://github.com/symfony/symfony-standard/blob/v2.1.11/composer.json你必须设置:

        "php": ">=5.3.3",
        "symfony/symfony": "2.1.*",
        "doctrine/orm": ">=2.2.3,<2.5-dev",
        "doctrine/doctrine-bundle": "1.1.*",
        "twig/extensions": "1.0.*@dev",
        "symfony/assetic-bundle": "2.1.*",
        "symfony/swiftmailer-bundle": "2.1.*",
        "symfony/monolog-bundle": "2.1.*",
        "sensio/distribution-bundle": "2.1.*",
        "sensio/framework-extra-bundle": "2.1.*",
        "sensio/generator-bundle": "2.1.*",
        "jms/security-extra-bundle": "1.2.*",
        "jms/di-extra-bundle": "1.1.*",
        "kriswallsmith/assetic": "1.1.*@dev"
    

    并在 packagist (https://packagist.org/packages/mopa/bootstrap-bundle) 上寻找 MopaBootstrapBundle,支持 Symfony 2.1 的最后一个版本是:

    "mopa/bootstrap-bundle": "2.2.*@dev"

    【讨论】:

    • 感谢您的回复,我已经删除了vendor目录和composer.lock。从 composer.json 中删除 mopa 并且它现在正在安装。完成后,我将尝试使用版本 2.2-dev 再次添加 mopa 我猜在编写 json 时 dev-master 很好,但由于 mopa 2.3 不适用于 symfony 2.1.*,它现在导致了一个问题。再次感谢您的帮助,我刚刚使用作曲家,所以在弄清楚它时遇到了一些麻烦。会让你知道结果如何。
    • 它确实安装了除了 twitter bootstrap 之外的所有东西,但毕竟完成了,我尝试打开一个页面,我得到的只是:Unable to load class "Symfony\Component\HttpFoundation\Session\Storage\PhpBridgeSessionStorage,实际上存储目录中不存在 PhpBridgeSessionStorage 文件。现在将尝试解决这个问题。
    • 你刷新缓存了吗?类在哪里调用?
    • 我删除了缓存并在 app/config/config.yml 中出现下一个错误,框架下的条目 fragments:http_method_override: true 导致错误,因此我将它们删除。并在下一个错误。应该创建表的 sql 脚本不会创建所有表,因此尝试运行 php app/console doctrine:schema:update --force 得到错误 Can't create table 'truck.#sql-3b4_1d' (errno: 150) 不确定 #sql-3b4_1d 是什么,因为 grep -r "3b4" . 给了我零个文件。
    • 通过删除所有表格并让教义创建它们来解决最后一个问题。现在看看我是否可以进行请求的更改。如果所有这些工具都能正常工作,而且只要稍加推动,它们似乎就可以工作。作曲家,学说就像魔术一样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-20
    • 2019-06-04
    • 1970-01-01
    相关资源
    最近更新 更多