Windows環境でのCodeIgniter 4.6.0 セットアップガイド―基本設定からセキュリティ対策まで
作成日:2025.03.20
更新日:2025.03.22
CodeIgniter 4.6.0のXAMPP環境へのインストール手順を詳しく解説します。PHPの環境設定から、Composerによるインストール、.envファイルの設定、そしてCSRFやXSS対策などのセキュリティ設定まで、実運用を見据えた導入ガイドをお届けします。
CodeIgniter4.6.0 を Windows の XAMPP 環境にインストールする手順の解説です。
PHP のバージョンと拡張機能の確認
PHPのバージョンは8.1以上が要求されます。コマンドラインで、
php -v
と入力して、PHPのバージョンを確認します。
また、以下の拡張機能が有効になっていることを確認します。
- intl
- mbstring
- json
このうち、json
に関しては、
PHP 8.0.0 以降、JSON 拡張モジュールは PHP コアに組み込まれているため、 常に有効になっています。※PHP 公式ドキュメントより
とのことなので、残りの intl
と mbstring
について確認します。
C:\xampp\php\php.ini
を開いて、以下の二行を確認し、;
(セミコロン)でコメントアウトされていたら、外します。
;extension=intl
↓
extension=intl
;extension=mbstring
↓
extension=mbstring
Composer で本体をインストール
CodeIgniter をインストールしたいディレクトリとひとつ上のディレクトリで、 Composer を実行します。
※Composer 自体の Windows 環境へのインストールは、XAMPP環境にComposerをインストールする方法 を参照。
composer create-project codeigniter4/appstarter dir_name
ここで、dir_name
は、インストールしたいディレクトリ名を指定します。
例えば、C:\xampp\htdocs
ディレクトリに ci4
という名前でインストールする場合は、
cd C:\xampp\htdocs
composer create-project codeigniter4/appstarter ci4
とします。
インストールが完了したら、インストールディレクトリに移動し、さらに日本語化用に翻訳パッケージもインストールしておきます。
cd ci4
composer require codeigniter4/translations
.env ファイルで各種設定を行なう
CodeIgniter4 の各種アプリケーション設定は、
- 本番/開発環境共通の設定および本番環境の設定
app/Config
ディレクトリ内の各ファイルで設定する- 開発環境の設定
.env
ファイルで設定する
という運用が良いのかなと思います。
.env
の内容が優先されるので、本番環境に .env
を置かないようにするのが運用として楽な気がします。
※.gitignore
には最初から .env
が登録されています。
インストール直後のディレクトリには .env
というファイルはなく、 env
というファイルがあるので、それをリネームして使います。
.env
の内容を以下のように修正。
# CI_ENVIRONMENT = production
↓
CI_ENVIRONMENT = development
# app.baseURL = ''
↓
app.baseURL = 'https://localhost/ci4/'
# 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 = databasename
database.default.username = databaseuser
database.default.password = password
database.default.DBDriver = MySQLi
database.default.DBPrefix =
# session.driver = 'CodeIgniter\Session\Handlers\FileHandler'
# session.savePath = null
↓
session.driver = 'CodeIgniter\Session\Handlers\FileHandler'
session.savePath = 'C:\xampp\htdocs\ci4\writable\session'
# logger.threshold = 4
↓
logger.threshold = 9
logger.threshold
で設定するログの出力レベルは、以下のような感じ。
- 0 = ログ機能を無効化、エラーログがオフになります
- 1 = 緊急メッセージ - システムが使用不可能な状態
- 2 = アラートメッセージ - 即時対応が必要
- 3 = 重大メッセージ - アプリケーションコンポーネントが利用不可、予期せぬ例外発生
- 4 = ランタイムエラー - 即時対応は不要だが、監視が必要
- 5 = 警告 - エラーではないが例外的な出来事
- 6 = 通知 - 正常だが重要なイベント
- 7 = 情報 - ユーザーのログインなど、興味深いイベント
- 8 = デバッグ - 詳細なデバッグ情報
- 9 = すべてのメッセージ
開発環境ではとりあえず 9
にしておいて、公開の本番環境では 4
か 5
くらいにしておくのが良いのかなと思います。
app/Config/ 以下の各種設定ファイルの編集
続いて、開発環境/本番環境共通の設定を app/Config/
以下の各種ファイルで行ないます。
app/Config/App.php の編集
public string $indexPage = 'index.php';
↓
public string $indexPage = '';
public string $defaultLocale = 'en';
↓
public string $defaultLocale = 'ja';
public array $supportedLocales = ['en'];
↓
public array $supportedLocales = ['ja','en'];
public string $appTimezone = 'UTC';
↓
public string $appTimezone = 'Asia/Tokyo';
$indexPage
を空白にすることで、CI4の各URLが、 https://localhost/ci4/index.php/cotroller/method
から https://localhost/ci4/cotroller/method
という形に変更できます。
あとは言語やタイムゾーン周りの設定。
app/Config/Filters.php の編集
public array $globals = [
'before' => [
// 'honeypot',
// 'csrf',
// 'invalidchars',
],
'after' => [
// 'honeypot',
// 'secureheaders',
],
];
↓
public array $globals = [
'before' => [
// 'honeypot',
'csrf',
'invalidchars',
],
'after' => [
// 'honeypot',
'secureheaders',
],
];
ここの設定については、
- beforeフィルター(リクエスト処理前)
-
- honeypot
- ボット対策のための機能
- csrf
- CSRF(クロスサイトリクエストフォージェリ)攻撃からの保護
フォーム送信時のセキュリティトークン検証を行います - invalidchars
- 不正な文字や危険な文字列をブロック
XSSなどの攻撃を防ぐのに役立ちます
- afterフィルター(リクエスト処理後)
-
- honeypot
- ハニーポット機能の後処理を行います
- secureheaders
- レスポンスにセキュリティヘッダーを追加
XSS対策やクリックジャッキング対策などのヘッダーを設定します
honeypot
に関しては、普段 Google reCAPTCHA v3 を使うことが多いので、それで対応するとして、それ以外のフィルターを有効にします。
app/Config/Security.php の編集
public string $csrfProtection = 'cookie';
↓
public string $csrfProtection = 'session';
public bool $tokenRandomize = false;
↓
public bool $tokenRandomize = true;
public string $tokenName = 'csrf_test_name';
↓
public string $tokenName = 'projectname_csrf_token';
CSRF対策の設定を行います。
- $csrfProtection
- CSRFトークンの保護方法を指定します。デフォルトは
cookie
ですが、session
に変更します。 - $tokenRandomize
- CSRFトークンをランダムに生成するかどうかを指定します。デフォルトは
false
ですが、true
に変更します。 - $tokenName
- CSRFトークンの名前を指定します。デフォルトは
csrf_test_name
ですが、プロジェクト名を含めた名前に変更します。
※ここは好みの問題かも
app/Config/Session.php の編集
public string $cookieName = 'ci_session';
↓
public string $cookieName = 'projectname_session';
セッションクッキーの名前を指定します。
色んなプロジェクトで CodeIgniter を使っていると、ここの設定を変えないと localhost の Cookie が ci_session
だらけになってしまって分かりにくくて不便なので変更。
.htaccess の設定
公開ファイルのディレクトリが ci4/public
なので、https://localhost/ci4/ で public/ が表示されるように設定する必要があります。
ci4
ディレクトリに .htaccess
を作成し、以下を記述。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
<FilesMatch "^\.">
Require all denied
Satisfy All
</FilesMatch>
上記は、ci4/
へのアクセスを ci4/public/
にリライトする設定と、.
(ドット)から始まるファイルへのアクセスを拒否する設定を行なっています。
なお、 .htaccess
での制御は開発環境のみにしておいて、本番環境では Apache の httpd.conf
などで設定した方が良いかなと思います。
※詳しい設定方法はCodeIgniter のユーザーガイド で解説されています。
動作確認
https://localhost/ci4/ にアクセスすると、CIのデフォルト画面が表示されます。これにてひとまずインストール完了。
ルーティング設定を行なう
2025.03.22追記
URIルーティング設定については、CodeIgniter 4 URIルーティング入門 ― 手動設定と改善版自動ルーティングの徹底比較を参照。

奈良市を拠点に、25年以上の経験を持つフリーランスWebエンジニア、阿部辰也です。
これまで、ECサイトのバックエンド開発や業務効率化システム、公共施設の予約システムなど、多彩なプロジェクトを手がけ、企業様や制作会社様のパートナーとして信頼を築いてまいりました。
【制作会社・企業様向けサポート】
Webシステムの開発やサイト改善でお困りの際は、どうぞお気軽にご相談ください。小さな疑問から大規模プロジェクトまで、最適なご提案を心を込めてさせていただきます。
ぜひ、プロフィールやWeb制作会社様向け業務案内、一般企業様向け業務案内もご覧くださいね。
CodeIgniter4 フォームヘルパー入門 ― HTMLフォーム生成の実践解説
2025.03.25
本記事では、CodeIgniter4 のフォームヘルパーを活用して、HTMLフォームを効率的に生成する手法を解説します。基本的な使い方から、CSRF対策や各種入力要素の生成、バリデーション連携の実践例まで、具体的なコードサンプルを交えながら分かりやすく説明しています。
CodeIgniter 4 URIルーティング入門 ― 手動設定と改善版自動ルーティングの徹底比較
2025.03.22
本記事では、CodeIgniter 4 の URIルーティング機能について、手動ルーティングと自動ルーティング(改善版)の違いや特徴を徹底解説しています。各設定方法の具体例や、ルーティング設定確認の手順を詳しく説明し、開発効率やセキュリティ、柔軟性の観点から最適な選択肢を検討するための情報を提供します。
PHP 8.2対応で発生するCodeIgniter3の警告への対処方法
2025.01.30
PHP 8.2では動的プロパティの利用が非推奨となり、CodeIgniter3環境で警告が出る問題が発生します。本記事では、その警告を抑制するための一時的な方法を解説しています。
CodeIgniter 3.xでComposerライブラリを使う設定方法
2023.04.30
CodeIgniter 3.xでComposerでインストールしたPHPライブラリを使うための設定方法を解説します。