Composerを使用してSymfony 2.2.xをインストールしても問題はありませんでした。常に http://symfony.com/download で安定バージョンをコピーしました。
composer create-project symfony/framework-standard-edition myproject/ 2.2.1
(私はComposerをグローバルにインストールしています)
2.3.0-RC1に興味がある
composer create-project symfony/framework-standard-edition mynewerproject/ 2.3.0-RC1
ただし、次のエラーによりシャットダウンしました。
Your requirements could not be resolved to an installable set of packages.
Problem 1
- symfony/icu v1.2.0-RC1 requires lib-icu >=4.4 -> the requested linked library icu has the wrong version installed or is missing from your system, make sure to have the extension providing it.
- symfony/icu v1.1.0-RC1 requires lib-icu >=3.8 -> the requested linked library icu has the wrong version installed or is missing from your system, make sure to have the extension providing it.
- symfony/symfony v2.3.0-RC1 requires symfony/icu >=1.0,<2.0 -> satisfiable by symfony/icu[v1.1.0-RC1, v1.2.0-RC1].
- Installation request for symfony/symfony 2.3.* -> satisfiable by symfony/symfony[v2.3.0-RC1].
Composer.jsonファイルを微調整する必要がありますか?
とても簡単で、int拡張機能をインストールして設定します。 PHP 5.3現在、Intl拡張機能はデフォルトで配布されていますが、MAMPなどの一部の配布にはIntlがないため、取得する必要があります。私はPEARを使用しました:
私のステップ:
$ pear install pecl/intl
—最初にpeclチャネルをpearに追加する必要があります。/Applications/MAMP/bin/php/php[version]/include/php
に移動する必要があります(ブログ投稿で説明されています)extension=intl.so
をphp.iniに追加する必要がありました。 MAMPでは、[ファイル]> [テンプレートの編集]> [php。[バージョン] .ini]に移動して、php.iniを簡単に編集できます。コマンドライン:
php
CLIは通常別のphp.ini
を使用するため、そこにも拡張ディレクティブを追加する必要があります。 CLIのphp.iniを見つけるには、$ php -i |grep php\.ini
を実行してファイルパスを検出し、extension=intl.so
をそのphp.iniに追加するだけです。$ php -m
を実行して使用可能なモジュールを確認します。php-intl拡張機能を更新します。これがicuエラーの原因です。
Sudo aptitude install php5-intl // i.e. ubuntu
brew install icu4c // osx
拡張機能が有効になっていて、php.iniでも適切に設定されていることを確認してください。
(ヒント:php-cliは時々異なるphp.iniを使用します)
php.ini
extension=intl.so ; *nix
extension=php_intl.dll ; windows
[intl]
intl.default_locale = en_utf8
intl.error_level = E_WARNING
拡張機能の有効化が成功した場合は、端末からphpinfo()
AND php -m
を確認してください。
Phpから現在のintlバージョンを確認します。
Intl::getIcuVersion();
Intl::getIcuDataVersion();
注意:不要(symfony 2.3はリリースされました)
このように依存関係に最小安定フラグ@devまたは@rcを追加してください:
composer create-project symfony/framework-standard-edition mynewerproject/ 2.3.*@dev
composerのデフォルトの安定性は安定しており、symfony 2.3ブランチは現在安定していません(@rcです)。安定性フラグの詳細を読む こちら 。
多くのアプリケーションは「en」ロケールのみをサポートし、翻訳機能やphp-intlは必要ありません。これがあなたの場合、またはサーバーにphp-intlをインストールできない場合は、composer.json
に symfony/ic 〜1.0を明示的に追加できます。 1.0はphp-intlを必要としませんが、1.1 +は必要です。
翻訳機能が必要ない場合:
$ php bin/composer.phar require symfony/icu ~1.0
この宣言なしでsymfony/symfony 2.3をインストールしようとするとComposerはphp-intlをインストールする必要があるsymfony/icu〜1.2をインストールしようとする場合があります。
これは、「ICUとデプロイメントの問題」の下の Symfony Intlコンポーネントのドキュメント で、より広範囲に明示的にカバーされています。
この問題または同様の問題に関する解決策は、次の場所にあります。 ICUおよび展開の問題
composerの動作は、正しいicuコンポーネントを選択するインテリジェントなものでなければなりません。
- symfony/icu 1.0。*:intl拡張が利用できない場合
- symfony/icu 1.1。*:intlがICU 4.0以降でコンパイルされている場合
- symfony/icu 1.2。*:intlがICU 4.4以降でコンパイルされた場合
Symfony 2.3のインストール時に(理論的には)エラーが発生しないはずです。 intl-extensionなし。
ただし、この記事で説明したように、開発環境が本番サーバーと異なる場合は、トラップされる可能性があります。
- 開発マシンはICU 4.4以上でコンパイルされますが、サーバーは4.4よりも低いICUバージョンでコンパイルされます
- intl拡張は、開発マシンでは使用できますが、サーバーでは使用できません。
本番サーバーへのルートアクセス権がない場合は、この記事で説明されているように修正できます。 (composer.jsonの調整)
さまざまな環境でのこの特別な場合に役立つので、この追加情報が役に立てば幸いです。
Mac OS Mavericksには、PHP 5.4.17が付属しています。これを取得するには、次の手順に従う必要があります。
brew install icu4c
Sudo pecl install intl
The path to the ICU libraries and headers is: /usr/local/opt/icu4c/
Edit /etc/php.ini and add extension=intl.so to the end.
この答えはこの人の問題に対する正しい答えではないかもしれないことは知っていますが、同じタイトルでの私の問題の解決策でした。 php.iniでintl拡張機能を有効にし、composerをアップグレードすることで、この問題を自分で解決できました。
コンポーザーのアップグレード。
php composer.phar self-update
この行からコメントを削除します(php.ini内):
extension=php_intl.dll
(php.ini)の[intl]の下にある次の2行のコメントも削除します。
[intl]
intl.default_locale = en_utf8
intl.error_level = E_WARNING
もちろん、Apache2を再起動します。 :)
追加情報:
Macを使用してHomebrewでphpをインストールした場合は、次の手順を実行します。
(PHP 5.4)
$ brew install php54-intl
(PHP 5.5)
$ brew tap josegonzalez/php
$ brew tap homebrew/dupes
$ brew install josegonzalez/php/php55-intl
$ Sudo apachectl restart
Apacheを再起動します。
より良い解決策は、composer.jsonを実動サーバーに必要なバージョンに修正することです。最初に、サーバー上のICUバージョンを決定します:1 2
$ php -i | grep ICU
ICU version => 4.2.1
次に、composer.jsonファイルのIcuコンポーネントを一致するバージョンに修正します。
"require: {
"symfony/icu": "1.1.*"
}
サーバーにintl拡張機能がインストールされていない場合はバージョンを「1.0 .」に設定し、サーバーがICU 4.2以前でコンパイルされている場合は「1.1。」を設定します。
最後に、実行
php composer.phar update symfony/icu
開発マシンで広範囲にテストし、再度デプロイします。これで、依存関係のインストールが成功します。