画竜点睛を衝く@mapyo

日々やった事をつらつらと書くブログです

symfony系のライブラリが2.7になっていた

ある時、不意に手元でcomposer updateをしてライブラリを更新した。

そしてdeployする時に、deployサーバでcomposer installをしてから、deployする仕組みになっているのだが、それが失敗していた。

なぜ?と思ってエラーを見てみると、

  Problem 1
    - Installation request for symfony/event-dispatcher v2.7.0 -> satisfiable by symfony/event-dispatcher[v2.7.0].
    - symfony/event-dispatcher v2.7.0 requires php >=5.3.9 -> your PHP version (5.3.3) does not satisfy that requirement.
  Problem 2
    - Installation request for symfony/translation v2.7.0 -> satisfiable by symfony/translation[v2.7.0].
    - symfony/translation v2.7.0 requires php >=5.3.9 -> your PHP version (5.3.3) does not satisfy that requirement.
  Problem 3
    - symfony/event-dispatcher v2.7.0 requires php >=5.3.9 -> your PHP version (5.3.3) does not satisfy that requirement.
    - guzzle/guzzle v3.9.3 requires symfony/event-dispatcher ~2.1 -> satisfiable by symfony/event-dispatcher[v2.7.0].
    - Installation request for guzzle/guzzle v3.9.3 -> satisfiable by guzzle/guzzle[v3.9.3].

php5.3.9のバージョンを要求するものがあるが、あなたの環境はphp5.3.3なのでダメです。。。的な感じ。。

deployサーバのphpのバージョンは5.3.3だったー。

流れとしてはこんな感じ。

  1. mac上でcomposer update。
  2. macphpバージョンは5.3.29とかなので、それを満たすライブラリが入る
  3. deployする時のphpバージョンは5.3.3だったので、そこでcomposer installする時にエラーになる。

そして、ローカルの環境はphp5.3.29なので、その辺のチェックに引っかからずに普通にするりと入っていく。

例えば、guzzle3を使っている場合、symfony/event-dispatcher>=2.1, <3.0を要求するようになっている。 https://github.com/guzzle/guzzle3/blob/master/composer.json#L49

最近2.7系がリリースされて、 https://github.com/symfony/symfony/releases/tag/v2.7.0

phpの対応バージョンが 5.3.3から、5.3.9になっていた。

https://github.com/symfony/symfony/blob/v2.6.9/composer.json#L19

https://github.com/symfony/symfony/blob/v2.7.0/composer.json#L19

なので、symfony系のライブラリを使っている人はちょっと注意という感じの内容でしたー

というメモを数週間前に書いてあったのを見つけたのでそれを掘り起こして来てみたのだったー