如何恢复作曲家更新?

Joh*_*les 17 laravel composer-php

今天我跑composer update了,更新完全打破了我的网站.我在php.log中找到了以下信息:

72.15.153.139 - - [11/Nov/2015:21:01:45 -0500]"GET/HTTP/1.1"500 - " - ""Mozilla/5.0(Windows NT 6.1; WOW64; rv:42.0)Gecko/20100101 Firefox/42.0"[Wed Nov 11 21:01:48 2015] [错误] [客户端127.7.179.129] PHP解析错误:语法错误,意外'功能'(T_FUNCTION),期待标识符(T_STRING)或\\(T_NS_SEPARATOR)在/var/lib/openshift/55c481747628e14556000188/app-root/runtime/repo/config/vendor/danielstjules/stringy/tests/CreateTest.php第5行72.15.153.139 - - [11/Nov/2015:21:01: 48 -0500]"GET/HTTP/1.1"500 - " - ""Mozilla/5.0(Windows NT 6.1; WOW64; rv:42.0)Gecko/20100101 Firefox/42.0"

似乎"danielstjules/stringy"是一个应该受到责备的人.但是,如何恢复此软件包的旧版本(或使用新闻版?)?我试图修改composer.lock文件,并进行了更改

            "require": {
            "danielstjules/stringy": "~1.8",
Run Code Online (Sandbox Code Playgroud)

        "require": {
            "danielstjules/stringy": "~1.9",
Run Code Online (Sandbox Code Playgroud)

composer update再次运行,但它提供了信息:

使用包信息加载composer存储库更新依赖项(包括require-dev)无需安装或更新写入锁定文件生成自动加载文件PHP解析错误:语法错误,意外"功能"(T_FUNCTION),期望标识符(T_STRING)或\(T_NS_SEPARATOR)在第5行的/var/lib/openshift/55c481747628e14556000188/app-root/runtime/repo/config/vendor/danielstjules/stringy/tests/CreateTest.php脚本php artisan clear-compiled处理返回的post-update-cmd事件一个错误

[RuntimeException]错误输出:PHP解析错误:语法错误,意外'功能'(T_FUNC TION),期望标识符(T_STRING)或\ var/lib/o penshift/55c481747628e14556000188/app-root/runtime/repo中的\(T_NS_SEPARATOR)第5行的/ config/vendor/danie lstjules/stringy/tests/CreateTest.php

我该怎么回滚这个包呢?谢谢.

编辑2:

composer installcomposer.lock自动修改.我修改了composer.json,它成功地获取了旧版本1.8.

但构建仍然失败.这个问题描述有原因.但在我之后rm -rf test/,问题仍然存在.

编辑3:

我尝试了以下方法:

  1. rm -rf vendor/
  2. composer update

问题消失了.

Sve*_*ven 92

如何恢复更新?简单:composer.lock从更新前使用的版本控制系统恢复文件.

composer.lock安装该软件,准确的记录.因此,将此文件提交到版本控制中是至关重要的,以便在更新失败时能够返回到工作版本.

运行composer install将始终安装记录的软件版本composer.lock,它只会像update这个文件不存在一样.

  • 这显然应该是答案.简单干净. (8认同)
  • 为什么这不是正确答案?!?!@JohnMccandles (3认同)
  • 只需恢复文件并运行“composer install”即可。成功了! (3认同)
  • 像这样的时候,我真的很高兴我一直滚动浏览已接受的答案。谢谢! (2认同)

mor*_*tic 11

如果检查作曲家版本规范文档,则~运算符将根据语义版本控制原则获取向后兼容的最新版本.这意味着,~1.8就相当于>=1.8 <2.0.0,同样~1.9是一样的>=1.9 <2.0.0.换句话说,~1.8将返回相同的东西,~1.9就像最新版本一样>=1.9.如果您真的想使用版本1.8,请执行以下操作:

"danielstjules/stringy": "1.8",
Run Code Online (Sandbox Code Playgroud)

这将获得完全版本1.8.当然你需要composer update事后跑.

我发现作曲家版本控制语法难以记住我自己.

  • 虽然这很有帮助,但最佳答案如下。 (8认同)