CodeIgniter

CodeIgniter3の環境を整える

この記事は約7分で読めます。
スポンサーリンク

CodeIgniter3は、4に比べcomposerやミドルウェア、名前空間に対応しておりませんが軽量で扱いやすく少ないリソースで高速に動作するフレームワークとして現在も人気があります。

ここではLinux環境へCodeIgniter3のフレームワークをセットアップする方法について説明します。

補足

既にウェブサーバ・MySQLサーバのインストールやドキュメントルートが設定済である事を前提とします。

またドキュメントルートは

/var/www/html/codeigniter3/public

とし、ホスト名はwww.example.comとします。

スポンサーリンク

フレームワークの取得・設置

サーバへターミナル等でログイン後、次のコマンドでディレクトリ移動します。

# cd /var/www/html/

 次のダウンロードサイトからCodeIgniter v3.2.0-dev (Current version)のリンクURLを取得します。

CodeIgniter のダウンロード — CodeIgniter 3.2.0-dev ドキュメント

次のように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.phppublicディレクトリ内へ移動します。

ディレクトリ設定の変更

index.phpを次のように変更します。

        // 93行目付近
	$system_path = '../system'; 

        // 110行目付近
	$application_folder = '../application';

上記の更新にてドキュメントルート配下からその上位ディレクトリへの変更が完了となります。

設定ファイルの変更

ホスト名の指定など次のファイルを編集します。

application/config/config.php

設定内容は次のようにキー名と値の構成になります。

$config[キー名] = '値’

次の表は初期設定の際に必要となる主要な設定情報の一覧になります。

キー名内容設定値・例説明
base_urlベースURLhttp://www.example.com/インデックス名を省いたアクセスURLを記載します。
index_pageインデックス名index.php
※表記させない場合は値は指定しない
インデックスページへのアクセス名(ベースURLは除く)
url_suffixサフィックス.htmlURLの最後に付加する固定文字列
language言語japanese言語名を指定
charset文字コードutf-8出力するリソースの文字コード
composer_autoloadリソースのオートロードTRUE / FALSEcomposerパッケージの自動用読み込み
log_thresholdログ出力設定1~40:ロギングを無効にする、エラーロギングをオフにする
1:エラーメッセージ(PHPエラーを含む)
2:デバッグメッセージ
3:情報メッセージ
4:すべてのメッセージ
encryption_key暗号キー一意なる複雑な文字列セッションやセキュリティクラスで使用する暗号・複合で使用するキー
sess_driverセッションドライバfiles / database / redis / memcachedセッションの保存方法
csrf_protectionCSRF 保護TRUE / FALSECSRFの脆弱性対策機能の有効・無効

データベースの設定

以下のファイルを編集しデータベース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',
];

これで環境の用意はひとまず完了です。

これ以外に必要な情報は別途ドキュメントを参照して編集してください。

CodeIgniter ユーザガイド — CodeIgniter 3.2.0-dev ドキュメント
スポンサーリンク
CodeIgniter
スポンサーリンク

コメント

タイトルとURLをコピーしました