3.4. CakePHP のセットアップ

CakePHP の最初のセットアップ方法は、二つ目の方法に比べて安全ではないので、通常、開発環境用にのみ推奨される方法です。二つ目の方法は、より安全で、公開環境で使用されるべきものです。

[注意] 注意

注意: /app/tmp は Web サーバを実行するユーザ名で writable にしておいてください。

3.4.1. 開発用セットアップ

開発時には、特定の DocumentRoot の中に Cake のインストールディレクトリを下記のように丸ごと配置できます。

/wwwroot
    /cake
        /app
        /cake
        /vendors
        .htaccess
        index.php

このセットアップでは、 wwwroot フォルダは Webルートのように振舞います。そのため、 URL はこのようになります。(mod_rewrite を使用している場合):

www.example.com/cake/コントローラ名/アクション名/パラメータ1/パラメータ2

3.4.2. 公開用セットアップ

公開用セットアップを利用するには、サーバの DocumentRoot の変更権限を持っていなくてはなりません。そうすることで、ドメインすべてを、ひとつの CakePHP アプリケーションとして動かすことができます。

公開用セットアップは下記の配置を使用します。:

../path_to_cake_install
    /app
        /config
        /controllers
        /models
        /plugins
        /tmp
        /vendors
        /views
        /webroot<-- ここが新しい DocumentRoot になる。
        .htaccess
        index.php
    /cake
    /vendors
    .htaccess
    index.php

例 3.1. 公開用の httpd.conf 案

DocumentRoot /path_to_cake/app/webroot


このセットアップでは、webroot ディレクトリが web ルートとして動きます。そのため、 URL は次のようになるでしょう。(mod_rewrite を使用している場合):

http://www.example.com/コントローラ名/アクション名/パラメータ1/パラメータ2

3.4.3. 高度なセットアップ:その他のインストール方法

Cake のディレクトリをディスクの別の場所に置きたい場合があります。共有サーバの制限のためであったり、幾つかの apps が同じ Cake ライブラリを共有するようにしたい時などです。

Cake アプリケーションには三つの主な部分があります。

  1. CakePHP のコアライブラリ - /cake

  2. アプリケーションコード(コントローラ、モデル、レイアウト、ビューなど。) -/app

  3. アプリケーションの webroot ファイル(画像、javascript, CSS など) -/app/webroot

それぞれのディレクトリは、ファイルシステムのどこにでも配置することができます。 webroot は、Webサーバからアクセスできるようにしておく必要があります。Cake に場所を伝えるようにする限り、必要ならば、 webroot フォルダを app フォルダから取り出すことも可能です。

Cake のインストール時の設定で、/app/webroot/index.php で幾つか変更する必要があります。 編集するべき定数が三つあります。:ROOT、 APP_DIR、 CAKE_CORE_INCLUDE_PATH です。

  • ROOT には、あなたのapp フォルダを含むディレクトリのパスを設定してください。

  • APP_DIR には、あなたの app フォルダのパス名を設定してください。

  • CAKE_CORE_INCLUDE_PATH には、Cake ライブラリフォルダのパスを設定してください。

例 3.2. /app/webroot/index.php (一部分、コメントを除いてある。)

if (!defined('ROOT'))
{
    define('ROOT', dirname(dirname(dirname(__FILE__))));
}

if (!defined('APP_DIR'))
{
    define ('APP_DIR', basename(dirname(dirname(__FILE__))));
}

if (!defined('CAKE_CORE_INCLUDE_PATH'))
{
    define('CAKE_CORE_INCLUDE_PATH', ROOT);
}

例で考えたほうが分かりやすいかもしれません。例えば、下記のようなセットアップで動作させたいとします。:

  • Cake ライブラリを他のアプリケーションと共有させたい。配置する場所は/usr/lib/cake

  • Cake webroot ディレクトリは /var/www/mysite/ になる必要がある

  • アプリケーションファイルは /home/me/mysite に保存する。

ファイルセットアップはこのようになります。:

/home
    /me
         /mysite<--  /cake_install/app として使われる
            /config
            /controllers
            /models
            /plugins
            /tmp
            /vendors
            /views
            index.php
/var
    /www
        /mysite <-- /cake_install/app/webroot として使われる
            /css
            /files
            /img
            /js
            .htaccess
            css.php
            favicon.ico
            index.php
/usr
    /lib
        /cake <-- /cake_install/cake として使われる
            /cake
                /config
                /docs
                /libs
                /scripts
                app_controller.php
                app_model.php
                basics.php
                bootstrap.php
                dispatcher.php
            /vendors
 

こういうセットアップの場合、 webroot の index.php ファイルを次のように編集する必要があります。(この例では、 /var/www/mysite/index.php) :

[注意] 注意

ファイルパスのデリミタとして、スラッシュよりも 'DS' 定数を使うようにしてください。そうすれば、間違ったデリミタを使って、'missing file'(「ファイルが見つからない」) エラーが出てしまうことを防止でき、より移動させやすくなります。

if (!defined('ROOT'))
{
    define('ROOT', DS.'home'.DS.'me');
}

if (!defined('APP_DIR'))
{
    define ('APP_DIR', 'mysite');
}

if (!defined('CAKE_CORE_INCLUDE_PATH'))
{
    define('CAKE_CORE_INCLUDE_PATH', DS.'usr'.DS.'lib'.DS.'cake');
}