Table of Contents : マニュアル

応用インストール

ある時には、CakePHPのディレクトリをファイルシステムの別な場所に配置したいと思う場合があるかもしれません。共有しているホストの制限であったり、複数のアプリが同じCakeのライブラリを使うようにしたかったりする場合などです。このセクションでは、どうやってCakePHPのディレクトリをファイルシステム内に分散配置できるのかを説明します。

まず、Cakeアプリケーションには三つの主要な部分があることに注意しましょう。:

  1. CakePHPのコアライブラリは、 /cakeの中にあります。
  2. あなたのアプリケーションコードは、/appの中です。
  3. アプリケーションのウェブルートは、通常、/app/webrootにあります。

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

Cakeインストールの環境設定をするには、/app/webroot/index.phpの中を少し修正する必要があります。編集しなくてはいけない三つの定数は、ROOT、APP_DIR、CAKE_CORE_INCLUDE_PATHです。

  • ROOTには、アプリのフォルダが含まれているディレクトリのパスを設定します。
  • APP_DIRには、アプリのフォルダを設定します。
  • CAKE_CORE_INCLUDE_PATHには、CakePHPライブラリフォルダのパスを設定します。

例を挙げて、応用インストールを実践した場合の様子を見てみましょう。CakePHPを次のような条件で動作させたいとします。:

  • CakePHPのコアライブラリは/usr/lib/cakeに配置する。
  • アプリケーションのwebrootディレクトリは/var/www/mysite/にする。
  • アプリケーションのアプリディレクトリは/home/me/mysiteに置く。

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

// /app/webroot/index.php (一部分。コメントは取り除いてあります。)

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');
}
  1. // /app/webroot/index.php (一部分。コメントは取り除いてあります。)
  2. if (!defined('ROOT')) {
  3. define('ROOT', DS.'home'.DS.'me');
  4. }
  5. if (!defined('APP_DIR')) {
  6. define ('APP_DIR', 'mysite');
  7. }
  8. if (!defined('CAKE_CORE_INCLUDE_PATH')) {
  9. define('CAKE_CORE_INCLUDE_PATH', DS.'usr'.DS.'lib'.DS.'cake');
  10. }

ファイルパスの区切り文字には、スラッシュではなくDS定数を使うようにお勧めします。こうしておくと、間違ったデリミタによる、ファイルが無いというエラーを防ぐことができ、コードをさまざまなプラットフォームで動くようにすることができます。

各クラス用パスの追加情報

同一システム上にあるアプリケーションで、MVCクラスを共有できると便利な場合もあります。二つのアプリケーションから同じコントローラを使用したい場合には、CakePHPのbootstrap.phpを使って、その追加クラスをビューに接続することが可能です。

bootstrap.phpの中に次のような変数を定義して、CakePHPがMVCクラスを検索しにいく場所を登録してください。

$viewPaths        = array();
$controllerPaths  = array();
$modelPaths       = array();
$helperPaths      = array();
$componentPaths   = array();
$behaviorPaths    = array();
  1. $viewPaths = array();
  2. $controllerPaths = array();
  3. $modelPaths = array();
  4. $helperPaths = array();
  5. $componentPaths = array();
  6. $behaviorPaths = array();

この特別な各変数は、リクエストがあった時に用いることのできる追加クラスが入っているパス情報の配列として設定できます。それぞれのパス情報の最後がスラッシュで終わるようにしてください。