CakePHPのローカル環境構築についてつまづいたこと

ここ最近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.sointlは違うものということで、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というファイルが入っているはずです。

  1. そのままリンクする。
#php.ini
extension=/opt/local/lib/php73/extensions/no-debug-non-zts-20180731/intl.so
  1. 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とグローバリゼーションのサポートを行ってくれる。。。ってよくわかりませんでした。