今天我运行了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;哇64;rv:42.0( 壁虎/20100101火狐/42.0" [2015年11月11日星期三21:01:48][错误][客户端 127.7.179.129]PHP 解析错误:语法错误、意外的"函数"(T_FUNCTION(、第 5 行的/var/lib/openshift/55c481747628e14556000188/app-root/runtime/repo/config/vendor/danielstjules/stringy/tests/CreateTest.php 中的预期标识符 (T_STRING( 或 \\ (T_NS_SEPARATOR( 72.15.153.139 - - [11/Nov/2015:21:01:48 -0500] "GET/HTTP/1.1" 500 - "-" "Mozilla/5.0 (Windows NT 6.1;哇64;rv:42.0( 壁虎/20100101火狐/42.0">
似乎"danielstjules/stringy"是罪魁祸首。但是,我怎样才能恢复到这个软件包的旧版本(或使用新闻版本?我尝试修改作曲家.lock文件,并更改了
"require": {
"danielstjules/stringy": "~1.8",
自
"require": {
"danielstjules/stringy": "~1.9",
并再次运行composer update
,但它提供了信息:
加载包含包信息的作曲家存储库 更新依赖项(包括需求开发( 无需安装或更新 写入锁定文件 生成自动加载文件 PHP 解析错误:语法错误、意外的"函数"(T_FUNCTION(、第 5 行的/var/lib/openshift/55c481747628e14556000188/app-root/runtime/repo/config/vendor/danielstjules/stringy/tests/CreateTest.php 中的预期标识符 (T_STRING( 或 \ (T_NS_SEPARATOR( 脚本 php 工匠清除编译处理返回的 post-update-cmd 事件并返回错误
[运行时异常] 错误输出:PHP 解析错误:语法错误、意外的"函数"(T_FUNC TION(,期望/var/lib/o 中的标识符 (T_STRING( 或 \ (T_NS_SEPARATOR( Penshift/55C481747628E14556000188/app-root/runtime/repo/config/vendor/danie lstjules/stringy/tests/CreateTest.php在第5行
如何回滚此包?谢谢。
编辑2:
composer install
将自动修改composer.lock
。我修改了composer.json
,它成功获取了旧版本 1.8。
但是构建仍然失败。此问题描述是有原因的。但是在我rm -rf test/
之后,问题仍然存在。
编辑3:
我尝试了以下方法:
-
rm -rf vendor/
-
composer update
问题消失了。
如何还原更新?简单:从更新之前使用的版本控制系统还原composer.lock
文件。
composer.lock
准确记录安装了哪个软件。因此,将此文件提交到版本控制中至关重要,以便在更新失败时能够返回到工作版本。
运行composer install
将始终安装composer.lock
中记录的软件版本,如果该文件不存在,它只会像update
一样运行。
如果查看作曲家版本规范文档,~
运算符会根据语义版本控制的原则获得向后兼容的最新版本。这意味着~1.8
等同于>=1.8 <2.0.0
,同样~1.9
也等同于>=1.9 <2.0.0
。换句话说,如果最新版本>=1.9
,~1.8
将返回与~1.9
相同的内容。如果你真的想使用版本 1.8
,只需这样做:
"danielstjules/stringy": "1.8",
这将得到确切的版本1.8
.当然,之后你需要运行composer update
。
我发现作曲家版本控制语法很难记住自己。