| 15件目(121件中) |

CakePHPでログやキャッシュの保存場所をapp外に変更する

固定リンク:#0000000115   投稿者:ZiSTA 日時:2011-03-01 10:05:45   コメント( 0

今回のミッション(ゴール)

ログやキャッシュのファイルの保存場所をappディレクトリの外に配置したい。
今回は以下のようなディレクトリ構成にしました。

  • releases
    • app(アプリケーション/ここをバージョン管理する)
      • webroot(ドキュメントルート/Web公開ディレクトリ)
  • shared(共有用/ここはバージョン管理しない)
    • cake(CakePHP本体)
    • uploads(ユーザーがアップしたファイル置き場/Web公開ディレクトリ)
    • cache(キャッシュ)
    • logs(ログ)
    • tmp(その他のtmp用)

背景

作成したアプリケーションのバージョンアップの際には本番サーバーにappディレクトリをそっくりコピーするだけで済むのが理想的です。CakePHPのデフォルトではapp/tmpディレクトリの中にログやキャッシュが含まれているので、それらをコピーしないように管理から除外する必要がありました。.gitignoreを設定して管理外にする方法もありますが、ディレクトリで管理対象をきっちり分ける事ができれば楽ができそうです。

実装

CakePHP 1.3ではログやキャッシュの保存場所を好みに設定する手段が提供されていました。
保存場所には当然ですが書き込み許可を与えておくようにして下さい。

ログ・ディレクトリの変更

4.6 ログの記録(Logging)にあるように下記のコードの'/path/to/custom/place/'の部分だけを好きなパスに書き換えて使用します。core.phpに記述します。

if (!class_exists('CakeLog')) {
    require LIBS . 'cake_log.php';
}
CakeLog::config('custom_path', array(
	'engine' => 'FileLog',
	'path' => '/path/to/custom/place/'
));

キャッシュ・ディレクトリの変更

キャッシュの保存場所も同様に設定する事が出来ます。app/config/core.phpファイルの最下部にキャッシュ設定の説明コメントと実際の設定(最下部の一行)がありました。そこにpathを加えた設定を記述します。

Cache::config('default', array(
    'engine' => 'File',
	'path' => '/path/to/custom/place/'
));


cacheの中のmodelsやpersistent、viewディレクトリは自動で生成してくれないので、オリジナルのディレクトリ構成と同じものを用意しておく事。

注意点

LOGSとCACHEの定数には変更によって使われなくなったパスが入っているので、プログラム内で使わないようにする事。

tmpディレクトリの変更

tmpディレクトリは/app/webroot/index.php内のTMPという定数で設定されているので、これも変更してみました。

if (!defined('TMP')) {
    define('TMP', '/path/to/custom/place/');
}


こちらもcacheディレクトリのケースと同様にオリジナルのtmpディレクトリ構成に含まれているsessionsやtestsディレクトリなどのサブディレクトリがきちんと含まれているようにしておく事が必要です。また書き込み許可も忘れずに。

余談

shared/uploadsディレクトリはapacheのaliasで割当て公開しています。

 

コメント

| 15件目(121件中) |
↑ ページトップ