前回MAMPのhtdocs内にCakePHP3をインストールすることができたので、引き続きデータベース設定などを行っていきます。
今回のページでは、CakePHP3のインストール後のディレクトリ構成とデータベースの設定関連から下記の4項目をまとめています。
- 「CakePHP3のインストール後のディレクトリ構成」
- 「MAMPのMySQLをターミナルから使用する」
- 「MAMPのMySQLにデータベースを作成」
- 「CakePHP3とデータベースを接続する」
CakePHP3のインストール後のディレクトリ構成
MAMPのhtdocsにあるCakePHP3を確認すると下記のディレクトリ構成になっています。
/cms /bin composer.json composer.lock /config index.php /logs phpunit.xml.dist /plugins README.md /src /tests /tmp /vendor /webroot
この中でも、CakePHP3でWebアプリケーションを作成する時は特にsrc以下のファイルを編集して行くことが個人的には多いのではないかと思います。
configフォルダ内では、データベースとの接続設定やルーティング設定などが行えます。
MAMPのMySQLをターミナルから使用する
MAMPを起動後にOpen WebStart pageから phpMyAdminにアクセスをしてデータベースを作成する方法もありますが、少し手間がかかってしまうため今回はターミナルからデータベースを作成します。
ターミナルにcdコマンドを入力してディレクトリをMAMPの/Library/binに移動します。
cd /Applications/MAMP/Library/bin
移動が完了したら下記コマンドを入力します。
./mysql -u root -p
*MAMPの設定を変更していない場合はデフォルトのユーザー名とパスワードそれぞれrootとなっています。
ユーザー名とパスワードがわからない時に確認する方法としてOpen WebStart pageのMySQL項目の箇所にUserとPasswordの項目があるのでそこで確認ができます。
入力後enterを押すと下記の文言が表示されるので、パスワードを入力します。デフォルトではパスワードはrootです。
Enter password:
パスワード入力後に再度enterを押すと下記の画像のような表示がされます。

ここまででMySQLをターミナルから使用できるようになりました。
MAMPのMySQLにデータベースを作成
ターミナルからMAMPのMySQLが使用できようになったので、先ずはデータベースを作成していきます。
データベースを作成する際のデータベース名はどのような名前でも大丈夫です。今回はcake_cmsで作成していきます。
MySQLが使用できようなっているターミナルに、下記のSQLコマンドを入力後enterを押します。
CREATE DATABASE cake_cms COLLATE utf8mb4_general_ci;
下記が表示されたらデータベースの作成が完了です。
Query OK, 1 row affected (秒数)
続いて下記のSQLコマンドを入力後enterを押します。
SHOW DATABASES;
作成した「cake_cms」データベースがDatabase一覧に表示されているはずです。
これでデータベースが作成できました。ここで一旦MySQL関連を置いておきます。下記のSQLコマンドを入力します。
exit;
入力後enterを押すと「Bye」と表示されれば無事終了です。
CakePHP3とデータベースを接続する
CakePHP3から先ほど作成した、「cake_cms」データベースに接続をします。
現在、http://localhost/cms/にアクセスするとDatabase項目がエラー表示になっていることを確認します。

上記のエラーを「configフォルダ内のapp.php」を編集してこのエラーを解消します。
app.phpファイル内の246行目あたりにある「Datasources内のdefault」の箇所を編集していきます。
'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' => 'my_app', //ここのmy_appをrootに変更 'password' => 'secret', //ここのsecretをrootに変更 'database' => 'my_app', //ここのmy_appをcake_cmsに変更 /* * You do not need to set this flag to use full utf-8 encoding (internal default since CakePHP 3.6). */ //'encoding' => 'utf8mb4', 'timezone' => 'UTC', 'flags' => [], 'cacheMetadata' => true, 'log' => false, /** * Set identifier quoting to true if you are using reserved words or * special characters in your table or column names. Enabling this * setting will result in queries built using the Query Builder having * identifiers quoted when creating SQL. It should be noted that this * decreases performance because each query needs to be traversed and * manipulated before being executed. */ 'quoteIdentifiers' => false, /** * During development, if using MySQL < 5.6, uncommenting the * following line could boost the speed at which schema metadata is * fetched from the database. It can also be set directly with the * mysql configuration directive 'innodb_stats_on_metadata = 0' * which is the recommended value in production environments */ //'init' => ['SET GLOBAL innodb_stats_on_metadata = 0'], 'url' => env('DATABASE_URL', null), ]
再度、http://localhost/cms/にアクセスするとDatabase項目のエラーがなくなっていることを確認します。
もちろんMAMPはずっと起動して「Apache Server」「MySQL Server」両方とも動いていることが前提です。

これで、CakePHP3とMAMPのMySQLに作成したデータベースの接続が成功しました。