ここ最近cakePHPの練習をしたいと思い、ローカル環境で環境構築をしようとしたのですが思った以上に時間(丸一日)がかかりすごく困った話です。
参考になったサイト
最終的には以下のサイトに結構助けられました。詳しく説明されており、これだけ読めばおそらく解決できます。
XAMPPでCakePHPを使えるようにしたい!~intl.soをインストールするまで~
環境
ちなみに自分の作ろうとした環境は以下です。
- MacOS Mojave
- XAMPP
エラーについて
XAMPPのApache Serverを起動してlocalhostページを開くときに以下のエラーが出ており、困っていました。
Fatal Error: You must enable the intl extension to use CakePHP. in 'Applications/XAMPP/xamppfiles/htdocs/mycakeapp/config/requirements.php on line 31'
intl.so
というファイルが見当たらないというエラーのようです。ぼくはintl
がMacの中に入っていることはわかっていたので最初はこのエラーの意味がわかりませんでした。
どうやらintl.so
とintl
は違うものということで、intl.so
を別途ダウンロードしなければいけないことになりました。
ただこのintl.so
のどこが厄介かというと、
- 現在homebrewでダウンロード不可能
- 別ルート(MacPorts)でダウンロードしないといけないこと
- いろいろ情報が古くなっていること(Qiitaだと2018年の情報が多く、ちょっと足りない)
手順
MacPortsをダウンロードします。以下のサイトがパスを設定するときに役に立ちます。 MacPortsの基本的な使い方とコマンド
# terminal にて sudo port install php73-intl
これで/opt/local/lib/php73/extensions/no-debug-non-zts-20180731/
にてintl.so
というファイルが入っているはずです。
- そのままリンクする。
#php.ini extension=/opt/local/lib/php73/extensions/no-debug-non-zts-20180731/intl.so
intl.so
をコピーして/Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20180731
に移動。そして移動したパスをphp.ini
に記入
#php.ini extension=/Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20180731
ちなみにintl
はなんなのか
グーグル検索すると以下のように出てきました。
The Internationalization extension (Intl) is a wrapper for the ICU library, a set of C/C++ and Java libraries that provide Unicode and Globalization support for software applications. It enables PHP programmers to perform UCA-conformant collation and date/time/number/currency formatting in their scripts.
ICUライブラリのラッパーでUnicodeとグローバリゼーションのサポートを行ってくれる。。。ってよくわかりませんでした。