2015-11-12 7 views
6

今日はcomposer updateを実行しました。更新は私のサイトを完全に壊しました。 バックコンポーザーの更新を元に戻すには?

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] [error] [client 127.7.179.129] PHP Parse error: syntax error, unexpected 'function' (T_FUNCTION), expecting identifier (T_STRING) or \\ (T_NS_SEPARATOR) in /var/lib/openshift/55c481747628e14556000188/app-root/runtime/repo/config/vendor/danielstjules/stringy/tests/CreateTest.php on line 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 /糸は」非難する一つのようです:私はphp.logに、以下の情報を見つけました。しかし、このパッケージの古いバージョン(またはニュース版を使用していますか?)に戻すにはどうすればよいですか?私はcomposer.lockファイルを変更しようとした、と

 "require": { 
      "danielstjules/stringy": "~1.9", 

  "require": { 
      "danielstjules/stringy": "~1.8", 

を変更して再度composer updateを実行しますが、それは情報を与えた:

Loading composer repositories with package information Updating dependencies (including require-dev) Nothing to install or update Writing lock file Generating autoload files PHP Parse error: syntax error, unexpected 'function' (T_FUNCTION), expecting identifier (T_STRING) or \ (T_NS_SEPARATOR) in /var/lib/openshift/55c481747628e14556000188/app-root/runtime/repo/config/vendor/danielstjules/stringy/tests/CreateTest.php on line 5 Script php artisan clear-compiled handling the post-update-cmd event returned with an error

[RuntimeException] Error Output: PHP Parse error: syntax error, unexpected 'function' (T_FUNC TION), expecting identifier (T_STRING) or \ (T_NS_SEPARATOR) in /var/lib/o penshift/55c481747628e14556000188/app-root/runtime/repo/config/vendor/danie lstjules/stringy/tests/CreateTest.php on line 5

私は、このパッケージをロールバックするにはどうすればよいです?ありがとう。

EDIT 2:

composer install自動的composer.lockを変更します。代わりにcomposer.jsonを変更し、古いバージョン1.8を正常にフェッチしました。

ビルドはまだ失敗しました。 This issue descriptionにその理由があります。しかし、私はrm -rf test/の後、問題はまだそこにあった。

EDIT 3:

私は次のことを試してみました:

  1. rm -rf vendor/
  2. composer update

問題は消えていました。

+0

'composer.lock'ファイルをコミットしますか? –

+0

あなたの 'composer.lock'はバージョンコントロールでなければなりません。そうすれば、変更を元に戻し、既知の機能バージョンを再インストールするために 'composer install'を実行することができます。 – ceejayoz

+0

まず、更新するバージョンを正確に指定する必要があります。 '〜'文字を使わずに 'composer.lock'を修正してください。まだ壊れている場合は、以前のリビジョンに戻すためにGITまたはSVNを使用する必要があります。 –

答えて

3

composer version specification documentationを確認すると、~オペレータは、semantic versioningの原則に従って下位互換性のある最新バージョンを取得します。つまり、~1.8>=1.8 <2.0.0に相当し、同様に~1.9はと同じです。つまり、最新バージョンが>=1.9の場合、~1.8~1.9と同じものを返します。 EXACTLYバージョン1.8を取得します

"danielstjules/stringy": "1.8", 

:あなたは本当にバージョン1.8を使用したい場合は、単にこれを行います。もちろん、composer updateを実行する必要があります。

自分自身を覚えておくために、作曲者のバージョン管理構文が厄介であることがわかりました。

27

更新を元に戻すにはどうすればよいですか?簡単:composer.lockファイルを、更新する前に使用していたバージョン管理システムから復元します。

composer.lockは、どのソフトウェアがインストールされたかを正確に記録します。したがって、更新が失敗した場合には、動作可能なバージョンに戻るために、このファイルをバージョン管理にコミットすることが重要です。

composer installを実行すると、composer.lockに記録されたソフトウェアのバージョンが常にインストールされますが、このファイルが存在しない場合はupdateのようにしか動作しません。

+2

これは明らかに答えになるはずです。簡単で清潔。 –

+0

明白な応答があなたの頭を紛失した場合、dispairに入るとき –

+0

これは正解ではないのはなぜですか? @JohnMccandles – evilReiko