Windows10にXAMPPでCakePHP3環境を作成してみた。

## 背景
会社の後輩がPHP環境ではまっているという話を聞いて、話を聞いてみたのですがよくわからなかったので、自分のPCに環境を構築することにしました。
最新バージョンをインストールしたら結構はまったので、情報を共有します。
当方、Javaの現場経験が3年程ですが、PHPはまったく触ったこともなく、環境構築したこともありません。
間違っている情報が記載されていたらご指摘いただければと思います。

## 環境作成日
2019/03/04

## 環境情報
OS Windows10 
PHP（XAMPPに同梱） 7.3.2 ⇒ 7.2.5
XAMPP 7.3.2（最新）
Composer 1.8.4（最新）

## 実施手順

### XAMPPインストール
以下のページを参考にインストールします。
[Windows10 - XAMPP のダウンロードとインストール - PC設定のカルマ](https://pc-karuma.net/windows-10-xampp-install/)

PHPのパスを通します。
[PHPのパスを通す - XAMPPの使い方 - PC設定のカルマ](https://pc-karuma.net/xampp-php-path/)

Apacheが起動できることを確認します。（停止しなくてよいです）
※オレンジのダッシュボード画面ではなく簡素なものが出ますが問題ありません。
[Apacheの起動・停止 - XAMPPの使い方 - PC設定のカルマ](https://pc-karuma.net/xampp-apache-start-stop/)

PHPの設定内容を確認します。
[PHPの設定内容を確認 - XAMPPの使い方 - PC設定のカルマ](https://pc-karuma.net/xampp-phpinfo/)

たくさんリンク先がありますが、上記のページだけ実施しました。
これでXAMPP環境構築は完了です。

### Composerインストール
次にCakePHPのプロジェクトを作成するために、Composerをインストールします。
既にXAMPPはインストールできているので、記事真ん中あたりの「Composerのダウンロード & インストール」の項だけ実施してください。
バージョンが確認できればOKです。
[WindowsにComposerをインストールする方法！ | HPcode](https://haniwaman.com/windows-composer/)

### CakePHPプロジェクトの作成（失敗）
「Windows Powershell または コマンドプロンプトを起動し、任意のフォルダ内にCakePHPをインストール」の項を参照してCakePHPプロジェクトを作成する。
[WindowsでのcakePHP3のローカル開発環境の作り方（非エンジニア向け） | ウェブジェネ](https://web-generalist.com/cakephp3/)

以下のコマンドを実行する。

```
cd C:\xampp\htdocs
composer create-project --prefer-dist cakephp/app my_app
```

コマンドを実行すると以下の警告が出たのでストップ。
※キャプチャは取り忘れましたが、無視して進めてもインストールで失敗しました。

```
PHP Warning:  PHP Startup: Unable to load dynamic library 'intl' (tried: C:\xampp\php\ext\intl (指定されたモジュールが見つかりません。), C:\xampp\php\ext\php_intl.dll (指定されたモジュールが見つかりません。)) in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library 'intl' (tried: C:\xampp\php\ext\intl (指定されたモジュールが見つか りません。), C:\xampp\php\ext\php_intl.dll (指定されたモジュールが見つかりません。)) in Unknown on line 0
```

### PHPのダウングレード（ 7.3.2 ⇒ 7.2.5 ）
ここからエラーの解消に大分ハマり…。
XAMPPのApacheを起動したり消したり、Composerをアンインストールして入れなおしたり、バージョンを変えたり、Windowsを再起動したりと思考錯誤するものの効果なし。
ふと`php -v` 単体でも同じエラーが発生していることに気づき、PHPの不具合の方向で再調査することにしました。

Stack OverflowでPHPのバージョンを5.6にして改善できたという情報があったので、XAMPPにいるPHPのダウングレードを検討します。
[xampp - PHP Warning: PHP Startup: Unable to load dynamic library &#39;intl&#39; - Stack Overflow](https://stackoverflow.com/questions/54962722/php-warning-php-startup-unable-to-load-dynamic-library-intl)

以下のサイトを参考にPHPを5.6にダウングレードします。
[XAMPP の PHP をダウングレードする方法 - サバとエンガワ](https://www.server-engineer.net/entry/xampp_php_downgrade)

5.6を入れるもApacheが上がらず、5.4に下げてもだめ。
※今考えると動かなかったのは`php.ini`の設定かも。
1バージョン前の7.2.5にしたところApacheが起動できました。
`php -v` を実行したところ、警告は出たのですが、以下のように変化がありました。

```
PHP Warning:  Cannot open 'C:\xampp\php\extras\browscap.ini' for reading in Unknown on line 0

Warning: Cannot open 'C:\xampp\php\extras\browscap.ini' for reading in Unknown on line 0
```

### browscap.iniのダウンロード
前項のようにエラーが変わり、`extras\browscap.ini`を確認したところ該当のファイルがいなかったので、ダウンロードして配置します。
以下サイトの`full_php_browscap.ini`をダウンロードします。
[Browser Capabilities Project](https://browscap.org/)

ダウンロードしたファイルを`browscap.ini`にリネームして、`C:\xampp\php\extras`に配置します。

### CakePHPプロジェクトの作成（成功）
コマンドを実行します。

```
cd C:\xampp\htdocs
composer create-project --prefer-dist cakephp/app my_app
```

正常にイントールが実行されています。
<img width="828" alt="cake_install.png" src="https://qiita-image-store.s3.amazonaws.com/0/298626/985e3148-bb9d-a71b-bdf3-b56c26808509.png">


インストールが完了したら、再度Apacheとmysqlを立ち上げます。
正常に起動された後、http://localhost/my_app に接続すると以下のようにCakePHPのページが表示されました。
<img width="1009" alt="cake_start.png" src="https://qiita-image-store.s3.amazonaws.com/0/298626/6a04251a-9dba-dc78-865e-75ca805d52e6.png">

やったね！

## 最後に
CakePHPを作成しているブログやページは多かったのですが、手順が詳しく書いていなかったりバージョンが分からなかったりと情報の選定に苦労しました。
（自分が無知すぎるだけかもしれませんが…）
せっかくやる気を出して勉強しようとしても環境が作れなかったりすると止まってしまうので、早めに相談できる環境があるといいなと思いました。
同じように詰まっている方が一人でも、この記事で問題を解消してくれると良いなと思います。
せっかく環境を作ったので自分も気が向いたらCakePHPで何か作ってみようと思います。