bin/cakeコマンドでintlエラーが出る場合の対処(CakePHP)

スポンサーリンク

CakePHP アプリケーションの production 環境で、bin/cake コマンドを使おうとしたところ intl エラーが発生しました。SSH でログイン中およびデプロイ時の両方で、bin/cake コマンドを使うときに同様のエラーが発生したので、どうやら intl 拡張の読み込みが上手くいっていないのが原因のようだった。

などのコマンド実行の際に、「intl extension(拡張)が見つかりませんよ」が原因のエラーが発生。

— 環境 —
CakePHP 3.2.5
PHP 5.5.30

【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
画像付き英語辞書 Imagict | 英単語をイメージで暗記
【開発記録】
英単語を画像イメージで暗記できる英語辞書サービスを作って公開しました
スポンサーリンク

なお、production 環境で確認したところ、PHP の intl 拡張はインストール済みで、php.ini で intl 拡張のパスを読み込む設定となっていました。intl 拡張をインストールする方法については、以下の記事を参照。

CakePHPデプロイでPHP extension intlエラー | EasyRamble

bin/cake コマンドを修正して解決

結論から言うと、コマンドラインからの PHP 実行(php-cli)で、php.ini が読み込まれておらず、intl 拡張の読み込みが失敗していたのが原因です。なので、bin/cake コマンドを若干修正して以下のワークアラウンドを行って解決しました。

bin/cake

デフォルトの bin/cake の上記箇所を以下のように修正した。

bin/cake

production 環境の場合は、php-cli コマンドを -c オプションで php.ini ファイルのパスを指定して実行させるように修正。これで無事に php.ini が読み込まれて、intl 拡張の読み込みもうまくいき、bin/cake コマンドが production 環境でも動作するようになりました。

スポンサーリンク
私は Ruby on Rails の前は、PHP & CakePHP を使っていました(今も使いますけど)。PHP についてはオライリーの本を中心に軽く10冊以上は読み込みました。
 
スポンサーリンク

Leave Your Message!