技術資料

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 公式ドキュメントより

とのことなので、残りの intlmbstring について確認します。

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 にしておいて、公開の本番環境では 45 くらいにしておくのが良いのかなと思います。

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 PHP

CodeIgniter 4 URIルーティング入門 ― 手動設定と改善版自動ルーティングの徹底比較

2025.03.22

本記事では、CodeIgniter 4 の URIルーティング機能について、手動ルーティングと自動ルーティング(改善版)の違いや特徴を徹底解説しています。各設定方法の具体例や、ルーティング設定確認の手順を詳しく説明し、開発効率やセキュリティ、柔軟性の観点から最適な選択肢を検討するための情報を提供します。

CodeIgniter PHP

PHP 8.2対応で発生するCodeIgniter3の警告への対処方法

2025.01.30

PHP 8.2では動的プロパティの利用が非推奨となり、CodeIgniter3環境で警告が出る問題が発生します。本記事では、その警告を抑制するための一時的な方法を解説しています。

CodeIgniter PHP

CodeIgniter 3.xでComposerライブラリを使う設定方法

2023.04.30

CodeIgniter 3.xでComposerでインストールしたPHPライブラリを使うための設定方法を解説します。

CodeIgniter PHP

阿部辰也へのお仕事の依頼・お問い合わせ

軽いご相談もお気軽にどうぞ!

個人情報の取り扱いについて *必須 プライバシーポリシーをご確認いただき、同意いただける場合は「同意する」にチェックをしてください。

keyboard_double_arrow_up
TOP