- 更新日: 2016年3月30日
- PHP & CakePHP
bin/cakeコマンドでintlエラーが出る場合の対処(CakePHP)
CakePHP アプリケーションの production 環境で、bin/cake コマンドを使おうとしたところ intl エラーが発生しました。SSH でログイン中およびデプロイ時の両方で、bin/cake コマンドを使うときに同様のエラーが発生したので、どうやら intl 拡張の読み込みが上手くいっていないのが原因のようだった。
1 2 3 4 |
$ bin/cake migrations migrate $ bin/cake console |
などのコマンド実行の際に、「intl extension(拡張)が見つかりませんよ」が原因のエラーが発生。
— 環境 —
CakePHP 3.2.5
PHP 5.5.30
なお、production 環境で確認したところ、PHP の intl 拡張はインストール済みで、php.ini で intl 拡張のパスを読み込む設定となっていました。intl 拡張をインストールする方法については、以下の記事を参照。
CakePHPデプロイでPHP extension intlエラー | EasyRamble
bin/cake コマンドを修正して解決
結論から言うと、コマンドラインからの PHP 実行(php-cli)で、php.ini が読み込まれておらず、intl 拡張の読み込みが失敗していたのが原因です。なので、bin/cake コマンドを若干修正して以下のワークアラウンドを行って解決しました。
bin/cake
1 2 3 4 5 6 7 8 |
if [ $(basename $0) != 'cake' ] then exec php "$CONSOLE"/cake.php $(basename $0) "$@" else exec php "$CONSOLE"/cake.php "$@" fi |
デフォルトの bin/cake の上記箇所を以下のように修正した。
bin/cake
1 2 3 4 5 6 7 8 9 10 11 12 |
if [ $(basename $0) != 'cake' ] then exec php "$CONSOLE"/cake.php $(basename $0) "$@" else if [ "$CAKEPHP_ENV" = "production" ]; then exec /usr/bin/env php-cli -c /path/to/php.ini -d allow_url_fopen=On -d detect_unicode=Off "$CONSOLE"/cake.php "$@" else exec php "$CONSOLE"/cake.php "$@" fi fi |
production 環境の場合は、php-cli コマンドを -c オプションで php.ini ファイルのパスを指定して実行させるように修正。これで無事に php.ini が読み込まれて、intl 拡張の読み込みもうまくいき、bin/cake コマンドが production 環境でも動作するようになりました。
- PHP & CakePHP の関連記事
- PHP+MySQLでNo such file or directoryエラー
- CakePHPアプリケーションをCapistranoでデプロイ
- Integrity constraint violation:Column ‘created’ in order clause is ambiguousエラー/CakePHP
- CakePHPでDB関連テーブルのレコード・データを取得
- CakePHPでカラム属性に別名/エイリアスを付ける仮想フィールド
- CakePHPで日付選択フォームのカスタマイズ
- CakePHP3で現在のコントローラー名・アクション名を取得
- PHPインストールでconfigure: error: freetype.h not foundエラー
- CakePHPでログイン後に元のページにリダイレクトさせる
- CakePHPで全てのモデル/テーブル名一覧を取得
Leave Your Message!