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.json
のrequire
に以下を追加する。
変更部分は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を使うにはdbdriver
をsqlite3
に変更し、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の設定は完了。