久しぶりにちょっと開発。
データがとても小さいのでSQLiteを使おうと思った。
開発はMac上。
PHPにSQLiteのドライバーはバンドルされているようです。
DBのメンテナンスツールにはなんといってもDB Browser for SQLiteがオススメですね。
さて、CodeIgniterでログオンログオフなどの管理をしようとすると、sessionを使うのが必須といえるでしょう。
CodeIgniterのセッション管理は独自のものだったと記憶しています。
SQLiteをセッション管理ファイルとして使うなら、こうします。
- DB Browserで次のようにテーブルを定義します。(ここではデータベースファイルをdb.sqlite3としています)
CREATE TABLE "ci_sessions" ( "id" TEXT, "ip_address" TEXT, "timestamp" INTEGER, "data" BLOB, PRIMARY KEY("id") )
CREATE INDEX "ci_sessions_timestamp" ON "ci_sessions" ( "timestamp" )
- application->config->database.php内で、
databaseにSQliteで作ったデータベースファイル(./db.sqlite3)を定義します。
dbdriverにsqlite3を指定します。 - application->config->config.phpのセッション管理をこうします。
$config['sess_driver'] = 'database'; $config['sess_cookie_name'] = 'ci_session'; $config['sess_expiration'] = 7200; $config['sess_save_path'] = 'ci_sessions'; $config['sess_match_ip'] = FALSE; $config['sess_time_to_update'] = 300; $config['sess_regenerate_destroy'] = FALSE;
- application->config->autoload.php内にこうします。
$autoload['libraries'] = array('session');
- このまま実行すると、おそらくDatabaseがRead Onlyのエラーになると思います。(Macの場合)、phpスクリプトとデータベースファイルが格納されていたディレクトリの書き込み権限を777にとりあえずします。だって自分しか使わないでしょ?
Welcomeクラスでいいので、起動してみてなんのエラーも出ないことを確認します。エラーが出ないということはsessionクラスは動いています。