CodeIgniter 3.0-dev 導入手順

CodeIgniter

※この記事は、CodeIgniter-3.0-devを対象に書かれています。
最近、PHPで開発するにあたりパーフェクトPHPという本を参考にフレームワークの勉強をしていました。
PHPは様々なフレームワークが存在し、正直どれにしようか迷いに迷ってました。
小規模な開発目的なので、国内ユーザーが多いCakePHPや新しめのFuelPHPなども比較的良かったのですが、
フレームワーク独自の縛りが多く、個人的にはある程度プログラマーの裁量で取り回しが可能なものが良かったので、
学習コストの少ない軽量な高速なCodeIgniterというフレームワークが良さそうだったのでサーバーにインストールしてみることにしました。
正直、CodeIgniterは日本ではマイナーな様ですが海外では利用実績も多いようで、
公式サイトのマニュアルやフォーラムなど結構充実しており、
基本英語ですがそれほど難しい英語ではないので日本語資料が少ないという問題点はあまり気にしなくても良いのではないかと思います。
尚、本記事でインストールしたCodeIgniterのバージョンは、3.0-devというリリース前の開発段階のものです。
公式サイトによれば、既にかなり動いているようで実運用でも利用しているケースがあるらしいので、
これから新規に開発するウェブアプリケーションであれば、サポート基幹的にもCodeIgniterは新しいものが良いと考えたので、
とりあえず、3.0-devで利用して正式リリース後にバージョンアップしたいと思います。

参考ウェブサイト

インストール手順

1. CodeIgniterダウンロード

CodeIgniter公式ウェブサイトからCodeIgniterのZipファイルをダウンロードします。

 

2. Zipファイルを展開します。

ダウンロードしたZipファイルを展開します。Zipファイル内は以下の構成になっています。
└─CodeIgniter-develop
  │  .gitignore
  │  .travis.yml
  │  composer.json
  │  contributing.md
  │  DCO.txt
  │  index.php
  │  license.txt
  │  phpdoc.dist.xml
  │  readme.rst
  │
  ├─application
  ├─system
  ├─tests
  └─user_guide_src

3. CodeIgniterアップロード

CodeIgniter-developフォルダー内の全ての(applicationフォルダー、systemフォルダー、testsフォルダー、etc…)と全てのファイル(index.php、etc…)をCodeIgniter-developフォルダー内の構成を保ったまま、サーバー上のウェブサイトのルートディレクトリへアップロードします。
ルートディレクトリにindex.phpが配置されていれば正しくアップロードされています。

4. アプリケーション設定

application/config/config.phpをテキストエディターで開きます。
以下の行(56行目)を探し、ウェブサイトのベースURLを設定します。
$config['base_url'] = '';
$config['base_url'] = 'http://example.com/';
暗号化やセッションを利用する場合は、以下の行(335行目)を探し暗号化キーを設定します。
大文字や小文字、数字が混在した32バイト(128ビット)を設定することで暗号化アルゴリズムを最大限に利用することが出来ます。
$config[‘encryption_key’] = ”;

5. データベース設定

データベースを利用する場合、application/config/database.phpをテキストエディターで開き、利用するデータベースの情報を設定(99行目から123行目)します。
$active_group = 'default';
$query_builder = TRUE;$db['default'] = array(
'dsn'     => '',
'hostname' => 'localhost',
'username' => '',
'password' => '',
'database' => '',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => TRUE,
'db_debug' => TRUE,
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'autoinit' => TRUE,
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);

[補足]

・CodeIgniter関連ファイルの場所を隠すことによってセキュリティを高めたい場合には、applicationフォルダーとsystemフォルダーを任意の名称へ変更します。名称を変更をした場合には、ルートディレクトリのindex.phpをテキストエディターで開き、$system_path変数(101行目)と$application_folder変数(116行目)へ反映して下さい。
/*
*---------------------------------------------------------------
* SYSTEM FOLDER NAME
*---------------------------------------------------------------
*
* This variable must contain the name of your "system" folder.
* Include the path if the folder is not in the same directory
* as this file.
*/
$system_path = 'system';

/*
*---------------------------------------------------------------
* APPLICATION FOLDER NAME
*---------------------------------------------------------------
*
* If you want this front controller to use a different "application"
* folder than the default one you can set its name here. The folder
* can also be renamed or relocated anywhere on your server. If
* you do, use a full server path. For more info please see the user guide:
* http://codeigniter.com/user_guide/general/managing_apps.html
*
* NO TRAILING SLASH!
*/
$application_folder = 'application';
・さらにセキュリティ高めたい場合は、ブラウザーから直接アクセス出来ないルートディレクトリより上位などのアプリケーションフォルダーの外部へapplicationフォルダやsystemフォルダー、viewsフォルダーを移動します。これに伴い、.htaccessファイルやindex.phpの編集方法はInstallation Instructionsを参照して下さい。
・(index.phpで宣言されている)ENVIRONMENT定数を切り替えることで、開発環境と運用環境を切り替えることが可能です。
/*
*---------------------------------------------------------------
* APPLICATION ENVIRONMENT
*---------------------------------------------------------------
*
* You can load different configurations depending on your
* current environment. Setting the environment also influences
* things like logging and error reporting.
*
* This can be set to anything, but default usage is:
*
*     development
*     testing
*     production
*
* NOTE: If you change these, also change the error_reporting() code below
*/
define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');

Read More