CodeIgniter 4.2の初期設定
この記事は CodeIgniter Advent Calendar 2022 - Qiita の17日目です。まだ、空きがありますので、興味のある方は気軽に参加してください。
設定ファイル
CodeIgniter4 の設定ファイルは、プロジェクトのルートに配置する .env
ファイルと、app/Config/
以下の設定ファイルがあります。
.env ファイル
.env
はインストール直後には存在せず、サンプルとしての env
ファイルが用意されています。env
を .env
にコピーすれば OK です。
.env
は環境変数を設定するためのものです。開発環境固有の設定値(データベース接続情報など)を設定します。.env
は Git などのバージョン管理に含めてはいけません。.env
はすでに定義されている環境変数は変更しません。- CodeIgniter4 の設定クラスがインスタンス化される時に、対応する環境変数があるとその値がプロパティに自動的に設定されます。
app/Config 設定ファイル
app/Config/
以下に設定ファイルがあります。
設定ファイルはクラスです。
名前空間は、App\Config
ではなく Config
です。
.env ファイルでの設定
まず、.env
ファイルを作成します。
$ cp env .env
.env
ファイルで環境変数を設定します。
まず、開発環境を development
に変更します。これで開発モードになります。
-# CI_ENVIRONMENT = production
+CI_ENVIRONMENT = development
baseURL
を設定します。
-# app.baseURL = ''
+app.baseURL = 'http://localhost:8080/'
データベース接続設定をします。
-# database.default.hostname = localhost
-# database.default.database = ci4
-# database.default.username = root
-# database.default.password = root
-# database.default.DBDriver = MySQLi
-# database.default.DBPrefix =
+database.default.hostname = localhost
+database.default.database = ci4app
+database.default.username = dbuser
+database.default.password = dbpassword
+database.default.DBDriver = MySQLi
+database.default.DBPrefix =
-# database.tests.hostname = localhost
-# database.tests.database = ci4
-# database.tests.username = root
-# database.tests.password = root
-# database.tests.DBDriver = MySQLi
-# database.tests.DBPrefix =
+database.tests.hostname = localhost
+database.tests.database = ci4app_test
+database.tests.username = dbuser
+database.tests.password = dbpassword
+database.tests.DBDriver = MySQLi
+database.tests.DBPrefix =
開発環境なので、ログを出力するレベルを上げておきます。
-# logger.threshold = 4
+logger.threshold = 9
app/Config 設定ファイルでの設定
app/Config
以下の設定ファイルを設定します。
多くのプロジェクトで変更するであろう設定は以下になります。
app/Config/App.php
CodeIgniter が生成するリンクのURLから index.php
を削除します。
--- a/app/Config/App.php
+++ b/app/Config/App.php
@@ -37,7 +37,7 @@ class App extends BaseConfig
*
* @var string
*/
- public $indexPage = 'index.php';
+ public $indexPage = '';
/**
* --------------------------------------------------------------------------
ロケールを ja
に変更します。
@@ -70,7 +70,7 @@ class App extends BaseConfig
*
* @var string
*/
- public $defaultLocale = 'en';
+ public $defaultLocale = 'ja';
/**
* --------------------------------------------------------------------------
なお、システムメッセージを日本語にするには、別途、codeigniter4/translations
のインストールが必要です。
CodeIgniter4のシステムメッセージを日本語にする を参照してください。
サポートするロケールに ja
を追加します。
@@ -97,7 +97 ,7 @@ class App extends BaseConfig
*
* @var string[]
*/
- public $supportedLocales = ['en'];
+ public $supportedLocales = ['en', 'ja'];
/**
* --------------------------------------------------------------------------
タイムゾーンを日本時間に変更します。
@@ -109,7 +109,7 @@ class App extends BaseConfig
*
* @var string
*/
- public $appTimezone = 'America/Chicago';
+ public $appTimezone = 'Asia/Tokyo';
/**
* --------------------------------------------------------------------------
app/Config/CURLRequest.php
CURLRequest
は同じインスタンスでリクエストを複数回送信すると、前回のリクエスト時の option が全て共有されるという仕様がデフォルトなので、これを無効にします。
--- a/app/Config/CURLRequest.php
+++ b/app/Config/CURLRequest.php
@@ -18,5 +18,5 @@ class CURLRequest extends BaseConfig
*
* @var bool
*/
- public $shareOptions = true;
+ public $shareOptions = false;
}
app/Config/Security.php
デフォルトの CSRF 保護は Cookie ベースなので、これをより安全な Session ベースに変更します。
--- a/app/Config/Security.php
+++ b/app/Config/Security.php
@@ -15,7 +15,7 @@ class Security extends BaseConfig
*
* @var string 'cookie' or 'session'
*/
- public $csrfProtection = 'cookie';
+ public $csrfProtection = 'session';
/**
* --------------------------------------------------------------------------
CSRFトークンをより安全にするため、ランダム化を有効に変更します。
@@ -26,7 +26,7 @@ class Security extends BaseConfig
*
* @var bool
*/
- public $tokenRandomize = false;
+ public $tokenRandomize = true;
/**
* --------------------------------------------------------------------------
app/Config/Filters.php
csrf, invalidchars, secureheaders フィルタを有効にします。
それぞれ、CSRF保護、不正な文字コードのチェック、セキュリティに関連するレスポンスヘッダー付加のためのフィルタです。
不要な URI があれば、除外設定してください。
--- a/app/Config/Filters.php
+++ b/app/Config/Filters.php
@@ -34,13 +34,13 @@ class Filters extends BaseConfig
public $globals = [
'before' => [
// 'honeypot',
- // 'csrf',
- // 'invalidchars',
+ 'csrf',
+ 'invalidchars',
],
'after' => [
'toolbar',
// 'honeypot',
- // 'secureheaders',
+ 'secureheaders',
],
];
app/Config/Validation.php
バリデーションクラスで「厳密なルール」を使うように変更します。なお、従来のルールは基本的にPOST配列の検証を前提としており、暗黙の型変換が行われるため、JSONデータなど bool や null、配列などの値を正しく検証できない場合があります。
--- a/app/Config/Validation.php
+++ b/app/Config/Validation.php
@@ -3,10 +3,10 @@
namespace Config;
use CodeIgniter\Config\BaseConfig;
-use CodeIgniter\Validation\CreditCardRules;
-use CodeIgniter\Validation\FileRules;
-use CodeIgniter\Validation\FormatRules;
-use CodeIgniter\Validation\Rules;
+use CodeIgniter\Validation\StrictRules\CreditCardRules;
+use CodeIgniter\Validation\StrictRules\FileRules;
+use CodeIgniter\Validation\StrictRules\FormatRules;
+use CodeIgniter\Validation\StrictRules\Rules;
class Validation extends BaseConfig
{
この記事は CodeIgniter Advent Calendar 2022 - Qiita の17日目です。まだ、空きがありますので、興味のある方は気軽に参加してください。
参考
Date: 2022/12/17