Curry
PHP Framework

導入

動作環境

CurryはPHP5.1.2以上の環境が必要です。PHP5.1.1以下では動作しません。
PHP5.3以上を推奨します。
一部のライブラリ(htmlパッケージ)はPHP5.3以上でないと動作しません。

インストール

まずは最新版パッケージをダウンロードしてください。
ダウンロードしたzip形式のパッケージを解答すると、curryとsiteという2つのディレクトリが存在します。
curryの方はフレームワークのソースです。
siteの方は実際のサイトシステムを想定した典型的なディレクトリ構成の雛形です。
siteというディレクトリ名は自由に変えて問題ありません。あなたのサイトの内容が判別しやすい名前がよいでしょう。
ただし基本的に中のディレクトリ構成は変更しないでください。

インストールはこれらのディレクトリをWebサーバー上のWeb公開ディレクトリ以下に配置するだけです。ただしフレームワークのソース(curry)は公開ディレクトリ以外に配置しても問題ありません。

初期設定

1、データベース接続設定

まずはデータベースの接続情報の設定を行います。設定はiniファイルを利用します。
設定ファイルの位置はsite/configs/database.iniです。
CurryでサポートしているデータベースはMySQL、PostgreSQL、SQLiteです。
あなたのシステムでデータベースを必要としない場合はこの設定は不要です。

2、.htaccessの設定

mod_rewriteを利用する場合は.htaccessの設定が必要です。.htaccessはsite/htdocs/.htaccessの位置にあります。
基本的にはパッケージに同梱の.htaccessをそのまま変更なしで問題ないですが、環境に合わせて設定の変更が必要な場合もあります。

アプリケーションの基点となるindex.phpは、site/htdocsの中に存在します。
このhtdocsディレクトリをWebルートに設定することが前提ですが、そうは行かない場合もあるでしょう。
その場合は.htaccessのRewriteBaseの設定を変える必要があります。
例えばサーバー上にpublic_htmlというディレクトリがあり、これがWebルートに設定されている状態で、この直下にsiteディレクトリを配置した場合です。Webルートから見ると、index.phpの位置は

/site/htdocs/index.php

になります。
この場合、.htaccessのRewriteBaseを以下のように設定する必要があります。

RewriteBase /site/htdocs

3、index.phpの設定

Curryでは全てのアクセスはindex.phpをスクリプトの基点とします。
index.phpではシステム共通の初期設定等を行っています。
基本的にはindex.phpは設定変更の必要はありませんが、フレームワークのディレクトリ(curry)と、サイトのディレクトリの位置関係を変えた場合は少し変更が必要です。

index.phpではフレームワークの位置を相対パスで設定しています。デフォルトではサイトのルートディレクトリと同じ階層に存在する場合を想定していますので、この位置関係を変えた場合はフレームワークの位置を正しく設定してやる必要があります。

具体的には以下の一行です。

index.php
define('CURRY_PATH', realpath(dirname(__FILE__) . '/../../curry') . '/');

デフォルトではフレームワークとサイトの位置関係は以下のようになっています。

  ∟public_html  ←Web公開ルート
    ∟curry    ←フレームワークディレクトリ
    ∟site     ←サイトシステムディレクトリ

これを例えば以下のように変更したとしましょう。

  ∟curry          ←フレームワークディレクトリ
  ∟public_html    ←Web公開ルート
    ∟site     ←サイトシステムディレクトリ

つまり、フレームワークディレクトリを一つ上の階層へ移し、Web公開ルート外に置いた例です。
この場合、index.phpでのフレームワークの位置指定も一つ上の階層にしなければなりません。すなわち以下のようにします。

//define('CURRY_PATH', realpath(dirname(__FILE__) . '/../../curry') . '/');
define('CURRY_PATH', realpath(dirname(__FILE__) . '/../../../curry') . '/');

デフォルトでは相対パスを元に絶対パスに変換するような形になっていますが、直接絶対パスで指定してもかまいません。その方がパフォーマンス的にも優れているでしょう。