CakePHP初期設定

CakePHPのインストールまでは前回紹介したので、
その後のDB設定など必要な修正をご紹介。

主要技術・環境

Windows Server 2012 R2
PostgreSQL

作業

データベース接続設定

今回、DBにPostgreSQLを使用しているので、ドライバなど設定を書き換えます。
対象ファイルは project/config/app.default.php です。

'Datasources' => [
        'default' => [
            'className' => 'CakeDatabaseConnection',
            //'driver' => 'CakeDatabaseDriverMysql',
            'driver' => 'CakeDatabaseDriverPostgres',
            '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',
            'port' => '5432',
            'username' => 'my_app',
            'password' => 'secret',
            'database' => 'my_app',
            'encoding' => 'utf8',
            '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'],
            //'init' => ["SET @@session.time_zone = 'Asia/Tokyo'","SET names utf8"], # PostgreSQLで使えない構文
            'init' => ["SET TIME ZONE 'Asia/Tokyo'","SET NAMES 'UTF8'"],

            'url' => env('DATABASE_URL', null),
        ],

init に配列でクエリ指定すれば、DB接続時に自動的に流してくれます。
Amazon RDSはタイムゾーンの指定ができず、UTCになってしまうので、
タイムスタンプの値が9時間ずれて取得されるので、タイムゾーン設定のクエリを毎度接続時に流すようにします。

php.iniの下記のコメントアウトを外すのもお忘れなく。

;extension=php_pdo_pgsql.dll
;extension=php_pgsql.dll

で、これでも動かない場合、こちらを参考に。

PHP本体フォルダ直下のlibpq.dllを、Wwindowsに認識させると動き出すと言うことである。

パスの通っているところにlibpq.dllを移動させて解決しました。Win鯖に塩。。

Security.salt

SALT の部分をランダムな値に書き換えます。

'Security' => [
        'salt' => env('SECURITY_SALT', '__SALT__'),
    ],

結果

スクリーンショット-2016-03-29-22.44.39

ちゃんと設定できました。

次回予告(予定)

CakePHP3のルーティングを学ぼう!

元記事はこちら

WindowsServer×CakePHP3の初期設定