CakePHP2.3系の話。
画像を格納する/webroot/imgのパスを変更したい場合、CakePHP2.3まではIMAGES定数やIMAGES_URL定数を使うのですが、bootstrap.phpでdefineしようとしてもすでに定義済みで定義できなかったのでメモ。
たしか1.3系ではbootstrap.phpで効いた気がするんですけど、気のせいかな?
/lib/Cake/bootstrap.phpで定義されちゃうので/webroot/index.phpで左記のファイルをincludeする前に定義しちゃいましょう。
// imagesディレクトリ指定
define('IMAGES_URL', 'images'.DS);
define('IMAGES', WWW_ROOT.IMAGES_URL);
// ↓がCake/bootstrap.phpのinclude箇所
if (!defined('CAKE_CORE_INCLUDE_PATH')) {
if (function_exists('ini_set')) {
ini_set('include_path', ROOT . DS . 'lib' . PATH_SEPARATOR . ini_get('include_path'));
}
if (!include ('Cake' . DS . 'bootstrap.php')) {
$failed = true;
}
} else {
if (!include (CAKE_CORE_INCLUDE_PATH . DS . 'Cake' . DS . 'bootstrap.php')) {
$failed = true;
}
}
cssやjsのディレクトリも同様です。
ちなみにCakePHP2.4系からは、IMAGES_URL定数の代わりにApp.imageBaseUrlを使うみたい。
Configure::write('App.imageBaseUrl', 'path');みたいにするのかな?
