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');
みたいにするのかな?