【cakePHP】環境構築　（Mac）メモ

#はじめに
・homebrewインストール
・phpインストール
・composerのインストール
・mysqlの接続
このような流れで環境構築していきます。


#Homebrewインストール
公式https://brew.sh/index_ja.html
通りにターミナルでコマンド入力

```
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
```
#PHPインストール
＊次のComposerのインストールには、PHPが先にインストールされている必要があります。今回は以下のバージョンのPHPがインストールされている環境にComposerをインストールします。

```
brew install php@7.2

==>
Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-php'...
~~中略~~
To have launchd start homebrew/php/php72 now and restart at login:
  brew services start homebrew/php/php72
==> Summary
🍺  /usr/local/Cellar/php72/7.2.1_12: 350 files, 46.6MB
```

#Composerとは

Composerとは、PHPのパッケージ管理ツールです。Node.jsのnpmみたいな認識。

コマンドを叩くと、必要なパッケージ類を指定されたバージョンでインストールしてくれます。その際依存関係にあるパッケージも合わせてインストールしてくれる優れものです。
<img width="361" alt="スクリーンショット 2020-04-05 20.04.32.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/522222/ae3549f6-a703-2eb4-031d-f9506416f982.png">


Composerを使う必要があってインストールから行ったので、その手順をメモ代わりに残しておきます。
#composerのインストール


インストール方法は2つ
###Homebrew を使って簡単に Composer をインストール
```
 % brew search composer
==> Formulae
composer 
```

インストール

```
$ brew install composer   
Updating Homebrew...
  ・・・省略（Homebrew のアップデートなど）・・・  
==> Downloading https://getcomposer.org/download/1.9.3/composer.phar
######################################################################## 100.0%
🍺  /usr/local/Cellar/composer/1.9.3: 3 files, 1.8MB, built in 7 seconds

```
```
% composer
   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 1.10.1 2020-03-13 20:34:27

Usage:
  command [options] [arguments]
・・・以下省略・・・
```
 -V オプションでバージョンのみを確認する

```
composer -V
Composer version 1.10.1 2020-03-13 20:34:27
```
Homebrew を使ってインストールすると Composer は ***/usr/local/Cellar/***にインストールされる。

```terminal

# brew でインストールしたパッケージのインストール先
$ ls /usr/local/Cellar/  
composer	libidn2		libunistring	webp
gettext		libpng		openssl@1.1	wget
jpeg		libtiff		tree
 
# tree コマンドで確認
$ tree /usr/local/Cellar/composer/  
/usr/local/Cellar/composer/
└── 1.9.3
    ├── INSTALL_RECEIPT.json
    └── bin
        └── composer
 
2 directories, 2 files
```

#Composer 公式サイト　インストール
getcomposer.org で Composer をインストールするためのコマンドを取得する

```
curl -sS https://getcomposer.org/installer | php
```

#cakePHP環境でプロジェクトを作成する
```
php composer.phar create-project --prefer-dist cakephp/app プロジェクト名
```
　
#作成したプロジェクトを立ち上げる

```
bin/cake server
```
引数のないデフォルト状態では、 http://localhost:8765/ であなたのアプリケーションに アクセスできます。

もしあなたの環境で localhost や 8765番ポートが使用済みなら、CakePHP のコンソールから 下記のような引数を使って特定のホスト名やポート番号でウェブサーバーを起動することができます。

```
bin/cake server -H 192.168.13.37 -p 5673
```
こうすればアプリケーションは http://192.168.13.37:5673/ でアクセスできます。

これだけです！ あなたの CakePHP アプリケーションは ウェブサーバーを設定することなく動きます。

サーバーが他のホストから到達できない場合、 

```
bin/cake server -H 0.0.0.0 
```
を試してください。

アクセスすると、
<img width="1081" alt="スクリーンショット 2020-04-05 20.37.16.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/522222/1aec41fb-6ca2-960b-1efb-da656d1ba3ce.png">

こんな感じの画面が出れば成功です。

#データベースの接続

接続できてないとエラーがでます。
<img width="605" alt="スクリーンショット 2020-04-05 20.52.15.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/522222/2d010eb6-ea51-37c9-e7b8-3d855de120e2.png">

```
CakePHP is NOT able to connect to the database.

Connection to database could not be established: SQLSTATE[HY000] [1045] Access denied for user 'ユーザー名'@'localhost' (using password: YES)
```
##データベースの情報を使って、設定ファイルを書き換えます。
***app/config***ファイルに行ってあげて、app_local.phpを開いください。
###＊注意
cakePHP4以降は

***app.default.php***から***app_local.php*** という名前に変わってるので注意！！

目印は**Datasource**を探します

```app_local.phpまたはapp.default.php
 'Datasources' => [
        'default' => [
            'className' => 'Cake\Database\Connection',
            'driver' => 'Cake\Database\Driver\Mysql',
            'persistent' => false,
            'host' => 'localhost',
            /**
             * CakePHP will use the default DB port based on the driver selected
             * MySQL on MAMP uses port 8889, MAMP users will want to uncomment
             * the following line and set the port accordingly
             */
            //'port' => 'non_standard_port_number',
            'username' => 'データベースアクセスユーザー名',　<---変更
            'password' => 'パスワード',　　　　　　　<---変更
            'database' => 'データベース名',　　　<---変更
            'encoding' => 'utf8',
            'timezone' => 'UTC',
            'flags' => [],
            'cacheMetadata' => true,
            'log' => false,
```
これで接続できれば成功です。