2025年から始めるCodeIgniter3とPHP8.3についてのまとめ

この2025年というご時世にCodeIgnier3を始めるにあたって、ポイントをまとめていく。

正直言うと、CodeIgniter3は2025年では古びたフレームワークであるが、シンプルさとVibe Codingのしやすさで、 自分だけのシンプルなツール等を作るには都合がよかったりする。

では、説明に入ろう。

開発環境について

  • PHP 8.3
  • CodeIgniter (php 8.3対応版)

CodeIgniter3のインストール

CodeIgniter3のインストールはcomposerから行うと良い。

kenjisさんがinstallerを作ってくれているのでそれを使おう

my-projectの部分は任意のディレクトリ名に変更すること。

composer create-project kenjis/codeigniter-composer-installer my-project
cd my-project

これでCodeIgniter3のインストールができたはず。

しかし、公式のCodeIgniter3はPHP8.1までにしか対応しておらず、PHP8.2以降で動かすにはいくつかの修正が必要になる。

しかし、その対応はpocketarcさんがやってくれているので、そちらを利用しよう

具体的にはcomposer.jsonrequireに以下を追加する。 変更部分はpocketarc/codeigniterの行。

{
    "description" : "The CodeIgniter Application with Composer",
    "require": {
        "php": ">=8.1",
        "pocketarc/codeigniter": "*",
    "benedmunds/ionauth": "3.x-dev",
    },
    "require-dev": {
        "mikey179/vfsstream": "1.1.*"
    }
}

ついでに、認証ライブラリのIonAuthも追加しておくと良い。 IonAuthはすでにPHP8.3に対応している。

その後、以下のコマンドを実行してライブラリをインストールする。

composer upgrade

これでCodeIgniter3をPHP8.3で動かす準備ができた。

public/index.phpの修正

public/index.php$system_pathを以下のように修正する。

$system_path = '../vendor/pocketarc/codeigniter/system';

ここまで来たら実際に動かせれるかを試してみよう。 プロジェクトのルートディレクトリで以下のコマンドを実行する。

./bin/server.sh

これで、http://localhost:8000にアクセスしてCodeIgniter3のウェルカムページが表示されればOK。

CodeIgniter3を良い感じに動かすために設定を変更

application/config/config.phpを開いて、以下の設定を変更する。 重要な箇所だけ抜粋した。

<?php

# 開発環境では以下のように設定するのが良かった。
$config['base_url'] = 'http://127.0.0.1:8000/';

# セッションを有効に 個人的にはファイルベースが好き
$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_samesite'] = 'Lax';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = APPPATH . 'cache/sessions/';
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;

# この設定は使えない。 よってFALSEにする。
# CodeIgniter3では html_escape() を使うのがよい。
$config['global_xss_filtering'] = FALSE;

# csrf対策を有効にする 設定はお好みで
$config['csrf_protection'] = TRUE;
$config['csrf_token_name'] = 'csrf_token';
$config['csrf_cookie_name'] = 'csrf_cookie';
$config['csrf_expire'] = 7200;
$config['csrf_regenerate'] = TRUE;
$config['csrf_exclude_uris'] = array();

次はapplication/config/database.phpを開いて、以下の設定を変更する。

シンプルなアプリなので SQLiteを使うことにする。 SQLiteを使うにはdbdriversqlite3に変更し、databaseにDBファイルのパスを指定する。

$db['default'] = array(
        'dsn'   => '',
        'hostname' => '',
        'username' => '',
        'password' => '',
        'database' =>  APPPATH . '../db/cms.db',
        'dbdriver' => 'sqlite3',
        'dbprefix' => '',
        'pconnect' => FALSE,
        'db_debug' => (ENVIRONMENT !== 'production'),
        'cache_on' => FALSE,
        'char_set' => 'utf8',
        'dbcollat' => 'utf8_general_ci',
        'swap_pre' => '',
        'encrypt' => FALSE,
        'compress' => FALSE,
        'stricton' => FALSE,
        'failover' => array(),
        'save_queries' => TRUE
);

これでDBの設定は完了。

参考文献