CakePHP環境構築メモ

CakePHP学習用個人備忘録

ゴール
XAMPP環境にCakePHPをインストールして、デフォルトページを表示するところまで

ポイント
intl拡張機能のエラー解消

環境
Mac
ローカル開発環境はXAMPP
PHP/Composer/インストール済

# XAMPPインストール

1.
MacOS用のダウンロードページからPHPバージョンを選択し、遷移先画面で末尾が`installer.dmg`のリンクをクリックしてDL(vmのほうではないので注意)
https://sourceforge.net/projects/xampp/files/XAMPP%20Mac%20OS%20X/

2.
インストールが完了すると勝手にコンパネが出てきます。
この時点でApacheが起動しているので以下にアクセスしてXAMPPのホーム画面が表示されればOK
http://localhost/dashboard/
(表示されない時はコンパネのManage ServerタブをクリックしてApacheをstartすればOK)
![スクリーンショット 2021-04-12 17.37.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825124/9e33a7fe-c895-b951-5cb1-3dfa98c48236.png)


# CakePHPをインストール
1.
アプリケーションフォルダ内に`XAMPP`フォルダが出現しています。公開フォルダである`htdocs`へ移動します。

```
cd /Applications/XAMPP/htdocs
```

2.
ターミナル上でhtdocsディレクトリに移動したら、プロジェクトディレクトリの生成とCakePHPのファイルをダウンロードします。
例でプロジェクト名(ディレクト名)はmessagesappにします。(好きなように決めてください)

```
composer create-project --prefer-dist cakephp/app messagesapp
```

3.
以下でCakePHPのデフォルトページが表示されればOKです。(プロジェクト名は指定した名称に変更してください)
http://localhost/dashboard/messagesapp

#intl拡張機能のエラー解消
【エラー文】
概要：　intl拡張機能が読み込まれていないのでPHPを調整して設定してください。

```
Fatal error: You must enable the intl extension to use CakePHP. in /Applications/XAMPP/xamppfiles/htdocs/messagesapp/config/requirements.php on line 31
```

【原因と解決策】
・Homebrewが`Homebrew/php`をdeprecated（廃止）しており、
　MacのデフォルトのPHPが使われていため、PHPを再インストールしてみる。

・MacPortsというパッケージ管理システムでintl拡張機能をインストールしてみる。



## PHPを再インストール

1.
XAMPPのPHPバージョンを確認（ページ最上部） 
http://localhost/dashboard/phpinfo.php

2.
インストールできるPHPのバージョンを確認します。

```
brew search php

＊結果＊
==> Formulae
brew-php-switcher      php-code-sniffer       php@7.2                php@7.4                phplint                phpmyadmin             phpunit
php ✔                  php-cs-fixer           php@7.3                phpbrew                phpmd                  phpstan
==> Casks
eclipse-php          netbeans-php
```
3.
XAMPPのバージョンにあったPHPをインストールします。

```
brew install php@7.4
```
4.
格納先を確認
MacのPHPのパスから、今回インストールしたPHPのパスが表示され、インストールしたPHP適応されていることを確認できます。

```
which php

＊結果＊
/Applications/XAMPP/xamppfiles/bin/php
```
5.
バージョンを確認

```
php -v

＊結果＊
PHP 7.4.16 (cli) (built: Mar 12 2021 04:42:02) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
```

## intl拡張機能をインストール
現在、intlをHomebrewでダウンロード出来ないので、`MacPorts`というパッケージ管理システムでインストールしていきます。

1.
以下記事を参考にMacPortsをインストールしましょう。MacPortsは/opt/local/以下にインストールされます。
https://webkaru.net/dev/macports-download-install/

2．
パスを通します。

設定ファイルを開く

```
vi ~/.bash_profile
```
以下を追記

```
PATH=/opt/local/bin:/opt/local/sbin:$PATH
MANPATH=/opt/local/man:$MANPATH
export PATH
export MANPATH
```

読み込ませる

```
source ~/.bash_profile
```

3．
アップデートします。
（MacPorts本体の更新とパッケージリストの更新を同時に行います。MacPortsを使う前に実行する癖をつけるといいらしいです）

```
sudo port selfupdate
```

4．
インストールしたPHPと同じバージョンのintl拡張機能をMacPortのコマンド（port）でインストールします。

```
sudo port install php74-intl
```

## XAMPPのphp.iniを編集
１．
intlをインストールしたことで以下の場所にフォルダが生成されますのでパスを取得します。
`/Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-＊＊＊＊＊＊＊＊`

２．
XAMPPのphp.iniに２行を追記します。
＊＊＊＊＊＊＊＊は上記で調べたフォルダ名に差し替えてください。

```
extension=/opt/local/lib/php74/extensions/no-debug-non-zts-＊＊＊＊＊＊＊＊/intl.so
extension=/Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-＊＊＊＊＊＊＊＊
```

php.iniの格納先は以下URLのLoaded Configuration File項目に記載されています。
http://localhost/dashboard/phpinfo.php


## Apacheを再起動してアクセス
XAMPPのコンパネでApacheを再起動していかにアクセスしてデフォルトページが表示されればOKです。
http://localhost/messagesapp/

![スクリーンショット 2021-04-13 13.54.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825124/da1195ca-f81a-f52a-c72b-a02cc3ba1662.png)

##参考記事
https://hacknote.jp/archives/56258/
https://webkaru.net/dev/macports-download-install/
https://www.karakaram.com/macports-howto/#install