Symfony2.3 standard editionから、新しいcomponentとしてSymfony¥Component¥Icuが必須になりました。ICUはInternational Components for Unicodeの略で、主に国際化関係のライブラリのようです。
https://github.com/symfony/Icu
ところが、このIcuコンポーネント、2013年夏現在で一つ問題があります。
Symfony¥Component¥IcuはicuというC言語のパッケージ
http://site.icu-project.org/home
に依存しており、しかもバージョン4.4以上を要求しています。
しかし、CentOS6.4の標準的なyumレポジトリでインストールできるicuはバージョンが4.2です。php開発者にとって最新版に素早く対応してくれることで有名なremiレポジトリにもありません。(※2013年夏現在)
さらに、php-intlはicuに依存しており、yumで入れられるphp-intlは必然的に低いバージョンのicuにリンクされてしまいます。
これでは、専用サーバー・VPSで、しかもphp-intlだけでもyumを使わずにphpizeしてビルドしないとせっかくのLTS版Symfonyが使えないことになってしまいます。こうなると共有サーバー(もともと、さくらやxrea,coreserverなどのsshがある程度自由に使えるサーバーじゃないと難しいですが)での利用は絶望的に思われます。
先日、私がSymfony2.3で開発済みのとあるシステムを、用意されたサーバー(icuなどの環境が変更不可な環境)にデプロイしようとした際に、このicuのバージョン問題にひっかかって文字通り立ち往生でした。再枠の場合、Symfonyで作ったシステムをまるっと捨てて、別の依存ライブラリの少ないフレームワークで再構築まで半ば覚悟しました。
が、その時、@hidenorigotoさんからありがたいアドバイスが!
もう再構築のために他のフレームワークを選定する直前まで行っていたのですが、急遽composer.jsonでsymfony/symfonyの前にsymfony/icuをv1.0.0にバージョン指定して記述したうえで、再度composer.phar installを試みることにしました。
(略)
"symfony/icu" : "1.0.*",
"symfony/symfony": "2.3.*",
(略)
結果、無事にicu4.2の環境でSymfony2.3のシステムを動かすことに成功しました!
使うライブラリのcomposer.jsonはよく読みましょう、という教訓でしたorz