「CakePHP3」CakePHP3のインストール後のディレクトリ構成とデータベース設定【入門】

カテゴリー:PHP

前回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を押すと下記の画像のような表示がされます。

MAMPのMySQLをターミナルから使用する

ここまでで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項目がエラー表示になっていることを確認します。

CakePHP3とデータベースを接続する

上記のエラーを「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とデータベースを接続する

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

参考:CakePHP3クイックスタートガイド


タグ

関連する投稿

ドラクエ好きな社会保険労務士有資格者・ファイナンシャルプランナー技能士検定2級正会員が運営をしています。当ブログではDQMSLを中心にWordPress・HTML・CSS・JS・PHPなどのTips備忘記録や資格関連の情報、その他雑記を発信して行きます。