如何用作曲家恢复破坏的laravel项目

时间:2015-05-27 14:01:11

标签: php json laravel-4 composer-php alerts

我正在使用laravel 4.2 今天我不得不重新安装我的一个插件,现在我的所有项目都被销毁了 这是我的composer.json文件:

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "type": "project",
    "require": {
        "laravel/framework": "4.2.*",
        "barryvdh/laravel-debugbar": "~1.8",
                "mews/captcha": "dev-master",
                "prologue/alerts": "dev-master",
        "yangqi/htmldom": "dev-master",
        "scalia/sphinxsearch": "dev-master"
    },
    "autoload": {
        "classmap": [
            "app/commands",
            "app/controllers",
            "app/models",
            "app/libraries",
            "app/database/migrations",
            "app/database/seeds",
            "app/tests/TestCase.php"
        ]
    },
    "scripts": {
        "post-install-cmd": [
            "php artisan clear-compiled",
            "php artisan optimize"
        ],
        "post-update-cmd": [
            "php artisan clear-compiled",
            "php artisan optimize"
        ],
        "post-create-project-cmd": [
            "php artisan key:generate"
        ]
    },
    "config": {
        "preferred-install": "dist"
    },
    "minimum-stability": "dev"
}

我想做的就是用其他东西改变mews / captcha插件。

在实施我的新验证码插件后,我尝试使用“作曲家更新”来更新作曲家项目。

然后我意识到序幕/警报不再支持laravel 4.2了,根据github和作曲家的错误。

Problem 1
    - Conclusion: don't install laravel/framework 4.2.x-dev
    - Conclusion: don't install laravel/framework v4.2.17
    - Conclusion: don't install laravel/framework v4.2.16
    - Conclusion: don't install laravel/framework v4.2.15
    - Conclusion: don't install laravel/framework v4.2.14
    - Conclusion: don't install laravel/framework v4.2.13
    - Conclusion: don't install laravel/framework v4.2.12
    - Conclusion: don't install laravel/framework v4.2.11
    - Conclusion: don't install laravel/framework v4.2.10
    - Conclusion: don't install laravel/framework v4.2.9
    - Conclusion: don't install laravel/framework v4.2.8
    - Conclusion: don't install laravel/framework v4.2.7
    - Conclusion: don't install laravel/framework v4.2.6
    - Conclusion: don't install laravel/framework v4.2.5
    - Conclusion: don't install laravel/framework v4.2.4
    - Conclusion: don't install laravel/framework v4.2.3
    - Conclusion: don't install laravel/framework v4.2.2
    - Installation request for prologue/alerts dev-master -> satisfiable by prologue/alerts[dev-master].
    - Conclusion: don't install laravel/framework v4.2.1
    - Conclusion: don't install laravel/framework v4.2.0
    - prologue/alerts dev-master requires illuminate/session ~5 -> satisfiable by laravel/framework[5.0.x-dev], illuminate/session[5.0.x-dev, 5.1.x-dev, v5.0.0, v5.0.22, v5.0.25, v5.0.26, v5.0.28, v5.0.4].
    - Can only install one of: laravel/framework[v4.2.0-BETA1, 5.0.x-dev].
    - don't install illuminate/session 5.0.x-dev|don't install laravel/framework v4.2.0-BETA1
    - don't install illuminate/session 5.1.x-dev|don't install laravel/framework v4.2.0-BETA1
    - don't install illuminate/session v5.0.0|don't install laravel/framework v4.2.0-BETA1
    - don't install illuminate/session v5.0.22|don't install laravel/framework v4.2.0-BETA1
    - don't install illuminate/session v5.0.25|don't install laravel/framework v4.2.0-BETA1
    - don't install illuminate/session v5.0.26|don't install laravel/framework v4.2.0-BETA1
    - don't install illuminate/session v5.0.28|don't install laravel/framework v4.2.0-BETA1
    - don't install illuminate/session v5.0.4|don't install laravel/framework v4.2.0-BETA1
    - Installation request for laravel/framework 4.2.* -> satisfiable by laravel/framework[4.2.x-dev, v4.2.0, v4.2.0-BETA1, v4.2.1, v4.2.10, v4.2.11, v4.2.12, v4.2.13, v4.2.14, v4.2.15, v4.2.16, v4.2.17, v4.2.2, v4.2.3, v4.2.4, v4.2.5, v4.2.6, v4.2.7, v4.2.8, v4.2.9].

我无法删除prologue / alerts插件。我想要的只是恢复我的项目,我有旧的提交/备份文件。但作曲家不允许我这样做。

另外,尝试从composer.json中移除序言/警报,以及app.php中的其他属性,但作曲家仍然无法帮助我。

错误是“类'Prologue \ Alerts \ AlertsServiceProvider'找不到“,这意味着作曲家试图安装较新版本的序幕/警报?

提前致谢。

3 个答案:

答案 0 :(得分:3)

嗯,你可以查看prologuephp/alerts releases的列表。如果您查看composer.json v0.3.0 0.4.0-beta.1 ,您会看到依赖项从以下变化:< / p>

"illuminate/config": "~4",
"illuminate/session": "~4",
"illuminate/support": "~4",

要:

"illuminate/config": "~5",
"illuminate/session": "~5",
"illuminate/support": "~5"

因此,如果您的项目使用的是Laravel 4,则只需使用正确的版本即可。在composer.json,而不是"prologue/alerts": "dev-master",使用 "prologue/alerts": "0.3.0"

答案 1 :(得分:2)

您的一般问题是您使用的是分支而不是版本。分支机构有两个主要问题:

  1. 他们没有指向一次提交过的独特代码,而是一个不断获取更新的移动目标。
  2. 它们本身具有开发稳定性,在项目中用作顶级依赖项时可能是可接受的风险,但如果在必须包含在其他地方的包中使用,则会产生问题。
  3. @milz的答案指向了正确的方向,但您应该全力以赴:对于您使用的每个包,请将每个引用替换为具有发行版本或版本范围的分支。

    mews/captcha - 发布的版本1.0.1,2.0.0和2.0.1 - 只有1.0.1与Laravel 4兼容。您可能希望使用1.0.*来修复错误,即使它们不太可能发生。

    prologue/alerts - 发布版本0.1.0,0.1.1,0.2.0,0.3.0和0.4.0。版本0.1和0.2要求Laravel 4.0,0.3.0允许任何4.x和0.4.0跳转到任何Laravel 5.0版本。选择0.3.*

    yangqi/htmldom - 没有发布的版本。尽管很难:只要维护者没有标记发布版本,就应该避免使用这个包。它也没有正确地说明它的依赖性 - 它依赖于Laravel服务提供者。要求维护人员标记版本,或切换到其他包。这个包可能会重复你现在经历的痛苦。

    scalia/sphinxsearch - 版本0.1,0.1.1和0.2都与Laravel 4兼容 - 选择0.2.*

    请注意,对于所有版本,您可能还会考虑不仅接受错误修正,还考虑兼容更新。这会将版本要求从x.y.*更改为~x.y。我推荐这个。

    另请注意,根据您使用的主分支版本,通过切换到标记版本,您可能会返回某些提交。这可能会恢复已提交给master的错误修复,但从未标记为发布。如果您发现正在使用的软件包有未发布的错误修正,您还应该要求维护人员发布这些错误修复程序。

    根据他们的反应速度和请求的解决程度,您可能会决定继续使用该程序包,或切换到其他程序。

答案 2 :(得分:0)

这是我到目前为止所做的事情:

  1. 从composer.json文件中删除&#34; prologue / alerts&#34;:&#34; dev-master&#34;,
  2. 在app / config / app.php中
  3. ,从提供商处删除了&#39; Prologue \ Alerts \ AlertsServiceProvider&#39;来自提供商和&#39;提醒&#39; =&GT; &#39; Prologue \ Alerts \ Facades \ Alert&#39;,来自别名
  4. &#34;作曲家更新&#34;来自控制台。
  5. 这可能不是一个很好的解决方案,但我设法在没有不受支持的插件的情况下恢复我的项目。