CakePHPの初期ディレクトリ構造から、各ファイルの役割を解説する【CakePHP4】②config

ディレクトリ構成の概要

下記の画像をご参照ください。

configディレクトリの概要

開発時によく触るファイルについて抜粋して解説します。

各ファイルの概要

app_local.php

全文

<?php
/*
 * Local configuration file to provide any overrides to your app.php configuration.
 * Copy and save this file as app_local.php and make changes as required.
 * Note: It is not recommended to commit files with credentials such as app_local.php
 * into source code version control.
 */
return [
    /*
     * Debug Level:
     *
     * Production Mode:
     * false: No error messages, errors, or warnings shown.
     *
     * Development Mode:
     * true: Errors and warnings shown.
     */
    'debug' => filter_var(env('DEBUG', true), FILTER_VALIDATE_BOOLEAN),

    /*
     * Security and encryption configuration
     *
     * - salt - A random string used in security hashing methods.
     *   The salt value is also used as the encryption key.
     *   You should treat it as extremely sensitive data.
     */
    'Security' => [
        'salt' => env('SECURITY_SALT', '__SALT__'),
    ],

    /*
     * Connection information used by the ORM to connect
     * to your application's datastores.
     *
     * See app.php for more configuration options.
     */
    'Datasources' => [
        'default' => [
            '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',
            'password' => 'secret',

            'database' => 'my_app',
            /*
             * If not using the default 'public' schema with the PostgreSQL driver
             * set it here.
             */
            //'schema' => 'myapp',

            /*
             * You can use a DSN string to set the entire configuration
             */
            'url' => env('DATABASE_URL', null),
        ],

        /*
         * The test connection is used during the test suite.
         */
        'test' => [
            'host' => 'localhost',
            //'port' => 'non_standard_port_number',
            'username' => 'my_app',
            'password' => 'secret',
            'database' => 'test_myapp',
            //'schema' => 'myapp',
            'url' => env('DATABASE_TEST_URL', 'sqlite://127.0.0.1/tests.sqlite'),
        ],
    ],

    /*
     * Email configuration.
     *
     * Host and credential configuration in case you are using SmtpTransport
     *
     * See app.php for more configuration options.
     */
    'EmailTransport' => [
        'default' => [
            'host' => 'localhost',
            'port' => 25,
            'username' => null,
            'password' => null,
            'client' => null,
            'url' => env('EMAIL_TRANSPORT_DEFAULT_URL', null),
        ],
    ],
];

内容

このファイルでは、以下の4つの設定ができます。

・debug:デバッグモードの切り替え
・Security:salt値の指定
・Datasources:データベースへのアクセス設定
・EmailTransport:メールの送付元設定

このうち、Datasourcesについては、最初に必ず設定する必要があるので解説します。

※最初に設定しておかないと以下のエラーが出ます。

エラー
Datasources
 'Datasources' => [
        'default' => [
            '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',
            'password' => 'secret',

            'database' => 'my_app',
            /*
             * If not using the default 'public' schema with the PostgreSQL driver
             * set it here.
             */
            //'schema' => 'myapp',

            /*
             * You can use a DSN string to set the entire configuration
             */
            'url' => env('DATABASE_URL', null),
        ],

host・username・password・databaseを任意のものに差し替えれば、データベースにアクセスすることが可能です。

こちらを設定すると、表示が下記のように変わり、データベースにアクセスできていることがわかります。

完了

app.php

デフォルトではapp_local.phpよりもより広範な設定がなされています。

挙動としては、まずapp.phpが読み込まれて、その後にapp_localが読み込まれるようです。

同じ要素に対する設定を両方のファイルで行なった場合には、app_local.phpの設定が優先されるようです。

bootstrap.php

configディレクトリ内のファイルの読み込みや、定数の定義を読み込みます。

設定ファイルの読み込み

例えば、先述のapp_local.phpは下記のように読み込まれています。

//bootstrap.php:90~91行目
if (file_exists(CONFIG . 'app_local.php')) {
    Configure::load('app_local', 'default');
}

追記すれば、デフォルトでは用意されていない設定ファイルを自分で作って読み込むことも可能です。

変数・定数の定義

下記の記事をご参照ください。

paths.php

webroot、src、tmp、logs、config、cache、などのパス定数が定義されています。

//paths.php:56行目
define('WWW_ROOT', ROOT . DS . 'webroot' . DS);

requirements.php

CakePHPを運用するための環境要件(PHP等のバージョン等)が記載されています。

//requirements.php:23~25行目
if (version_compare(PHP_VERSION, '7.2.0') < 0) {
    trigger_error('Your PHP version must be equal or higher than 7.2.0 to use CakePHP.', E_USER_ERROR);
}

※CakePHP Version:4.4.10の場合

CakePHP7.2.0で以上で運用しないと、「Your PHP version must be equal or higher than 7.2.0 to use CakePHP」というエラーを表示するように設定されているようです。

routes.php

ルーティングの設定ができます。

ルーティングとは「どのurlでどのページを設定するか?」という設定です。

詳細は下記をご参照ください。

参考

CakePHP公式:CakePHP のフォルダー構成

コメント

タイトルとURLをコピーしました