2012年5月19日土曜日

さくらレンタルサーバーでCodeigniterを試す

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
CodeigniterはMVCタイプのPHPフレームワークで
他のフレームワークと比べて速いらしい
その変わりに機能は最小限といった感じ。
必要に応じてライブラリを落としてきたり、自分で実装する必要があるようだ。
MVCといってもコントローラーだけでDB読み込み、ページの表示もできるので
自分の好みにあった使い方もできる。Railsの規約とは反れる感じだ。

Codeigniterユーザーガイド(日本語)

マニュアルも日本語でわかりやすい。
ライブラリの説明を読むことでそれなりの機能は実装できそうだ。
一通り読んで、さくらレンタルサーバーでHelloを表示させるまでやってみた。

Codeigniter version 2.1.0
(system部分だけ2.1.0を使い、言語のsystem/languageは2.0.3の日本語を使っている。

準備
・phpがローカルで使えるようになってる状態
・PHPが編集できるエディタもしくはIDE。
(自分はNetbeans)

●まずはローカルでのHello
①とりあえずダウンロードしたフォルダを名前だけ変えてそのまま配置
・localhost/(アプリケーション名) にアクセスするとwelcomeページが表示される




②CIのコアライブラリの分離
ライブラリを使いまわして容量を節約する
systemファイルを外に出して名前をとりあえずCIにかえてみる

index.php
$system_path = 'system';
$system_path = '../CI';

で他のプロジェクトと使いまわせる
 user_guideやtxt関係のファイルはとりあえず削除


・CIのフォルダに直接アクセルできちゃったりするのかな?
直接 localhost/CIにアクセスしてみる
アクセス権限でアクセスできないというメッセージが表示される
Access forbidden!

③helloテスト
 よくやる”hello”を表示させる。
 コントローラーにhello.phpを作成する。クラス名は大文字

class Hello extends CI_Controller {

    function index() {
      echo "hello";
    }

}

 以下にアクセスとhelloが表示される
 http://localhost/cafeole/index.php/hello


④URLのindex.phpを表示させない
かっこ悪いので表示させないようにする

参考 http://codeigniter.jp/user_guide_ja/general/urls.html
・config/config.php
index_pageを空白にする
$config['index_page'] = '';

・.htaccessファイルの設定
公式のままだとなぜかうまくいかなかった。
ルートに.htaccessを作成し以下のようにしてみる

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]

でhttp://localhost/アプリケーション名/helloにアクセスすると
helloが表示された。


●ここからさくらのレンタルサーバーでHello
プランはスタンダード

①フォルダが見え見えなのでインデックス表示をなくす 

サクラのコントローラパネル→ファイルマネージャー
上のメニューの表示アドレス→アクセス設定→indexファイル
でアクセスの拒否をチェックする

ルートにアクセスすると以下のメッセージ
アクセスする権限がない。これでOK.

Forbidden
You don't have permission to access / on this server.

②ファイルアップロード
→ローカルのままコピペするだけ、特に変更なし
CIフォルダとアプリ用のフォルダは分離されている状態でOK.

③アクセスして確認
アプリのルートにアクセスすると、先ほどのwelcome画面が表示されうまくいってるように思ったが
/アプリケーション/helloにアクセスしても No input file specified(ファイルが指定されていない)
/アプリケーション/index.php/hello はちゃんと表示される

ここを参考 http://codeigniter.jp/user_guide_ja/installation/troubleshooting.html

.htaccessファイルを修正
なんかよくわかんないけどRewriteRuleのindex.phpの後ろに?をつけてみる

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond $1 !^(index\.php|images|robots\.txt) 
RewriteRule ^(.*)$ index.php?/$1 [L]

/アプリケーション/helloでhelloが表示された。

他の記事を参考にさせてもらってさくらの場合は
少し設定をいじらないといけないみたいなことが書かれていたので
これから実装していくと何かエラーが起こるかもしれない。
get送信のときになんちゃらかんちゃらとか。

とりあえずここまで
次はCRUDの機能を実装して慣れていきたい。

以下は hello画面、ちゃんと表示されていますね

0 件のコメント:

コメントを投稿