CodeIgniter3は、4に比べcomposerやミドルウェア、名前空間に対応しておりませんが軽量で扱いやすく少ないリソースで高速に動作するフレームワークとして現在も人気があります。
ここではLinux環境へCodeIgniter3のフレームワークをセットアップする方法について説明します。
またドキュメントルートは
/var/www/html/codeigniter3/public
とし、ホスト名はwww.example.comとします。
フレームワークの取得・設置
サーバへターミナル等でログイン後、次のコマンドでディレクトリ移動します。
# cd /var/www/html/
次のダウンロードサイトからCodeIgniter v3.2.0-dev (Current version)のリンクURLを取得します。
次のようにURLを指定してコマンドを実行します。
# wget https://codeload.github.com/bcit-ci/CodeIgniter/zip/develop
コマンド実行後developというファイルが取得されますが、このファイル名では何のファイルが不明なので次のように名前変更します。
# mv develop develop.zip
次にこのファイルを解凍します。
# unzip develop.zip
解凍後、CodeIgniter-developのファイルの存在が確認できますが更に次のコマンドで名前変更します。
# mv CodeIgniter-develop codeigniter3
ファイル構造の変更
Codeigniter3内のファイル構造は次の通りです。
/var/www/html
└ codeigniter3
├application(ディレクトリ)
├build-release.sh
├composer.json
├contributing.md
├DCO.txt
├.editorconfig
├.github(ディレクトリ)
├.gitignore
├index.php
├license.txt
├readme.rst
├system(ディレクトリ)
└tests(ディレクトリ)
上記構造のうちドキュメントルートに設置する予定のindex.phpを起点とするとsystemディレクトリとapplicationディレクトリは公開する必要のないディレクトリになりキー情報やこの後設定するデータベースの接続情報など、外部に漏れてはいけない状況がドキュメントルート配下に配置環境の為、セキュアではありません。
尚、systemディレクトリやapplicationディレクトリ内のファイルは全て
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
のように定数によるアクセス制限を掛けている為、直接アクセスする事はできない意味では安全ですが、これはPHPが正常に動作した場合に限り安全というには根本的な対策にはなっていません。
この対策としてsystemディレクトリとapplicationディレクトリをドキュメントルート配下でなない上位ディレクトリへ設置するように変更します。
ディレクトリの作成・ファイルの移動
# mkdir public
publicディレクトリを作成します。
mv index.php ./public/
index.phpをpublicディレクトリ内へ移動します。
ディレクトリ設定の変更
index.phpを次のように変更します。
// 93行目付近
$system_path = '../system';
// 110行目付近
$application_folder = '../application';
上記の更新にてドキュメントルート配下からその上位ディレクトリへの変更が完了となります。
設定ファイルの変更
ホスト名の指定など次のファイルを編集します。
application/config/config.php
設定内容は次のようにキー名と値の構成になります。
$config[キー名] = '値’
次の表は初期設定の際に必要となる主要な設定情報の一覧になります。
キー名 | 内容 | 設定値・例 | 説明 |
base_url | ベースURL | http://www.example.com/ | インデックス名を省いたアクセスURLを記載します。 |
index_page | インデックス名 | index.php ※表記させない場合は値は指定しない | インデックスページへのアクセス名(ベースURLは除く) |
url_suffix | サフィックス | .html | URLの最後に付加する固定文字列 |
language | 言語 | japanese | 言語名を指定 |
charset | 文字コード | utf-8 | 出力するリソースの文字コード |
composer_autoload | リソースのオートロード | TRUE / FALSE | composerパッケージの自動用読み込み |
log_threshold | ログ出力設定 | 1~4 | 0:ロギングを無効にする、エラーロギングをオフにする 1:エラーメッセージ(PHPエラーを含む) 2:デバッグメッセージ 3:情報メッセージ 4:すべてのメッセージ |
encryption_key | 暗号キー | 一意なる複雑な文字列 | セッションやセキュリティクラスで使用する暗号・複合で使用するキー |
sess_driver | セッションドライバ | files / database / redis / memcached | セッションの保存方法 |
csrf_protection | CSRF 保護 | TRUE / FALSE | CSRFの脆弱性対策機能の有効・無効 |
データベースの設定
以下のファイルを編集しデータベースMySQLの接続情報を設定します。
application/config/database.php
$db['default'] = array(
'dsn' => '',
'hostname' => 'ホスト名',
'username' => 'DBユーザー名',
'password' => 'パスワード',
'database' => 'データ',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
綺麗なURLにする
例えば複数の会員情報の一覧から特定の会員IDが5番のプロフィール詳細ページは一般的に次のようになります。
http://www.example.com/index.php/profile/view/id/5
上記URLではindex.phpのインデックスファイルの後にパラメータがスラッシュ区切りで構成される為、綺麗ではないのでindex.phpを削除して綺麗にURLにする為、次のファイルを作成・編集します。
public/.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/\ [L]
ライブラリ・ヘルパーの自動読み込み
常に使用するライブラリや頻繁に使用するヘルパーなどは自動読み込み設定する事でコントローラー内で都度読み込み宣言を記載する手間を省く事ができます。
次のファイルを編集します。
application/config/autoload.php
// ライブラリ自動読み込み
$autoload['libraries'] = [
'database',
'session',
];
// ヘルパー自動読み込み
$autoload['helper'] = [
'url',
'form',
];
これで環境の用意はひとまず完了です。
これ以外に必要な情報は別途ドキュメントを参照して編集してください。
コメント