cakePHPのインストールにはまってしまったので、メモしときます。
レンタルサーバ上での運用を目的としているで、Cakeのインストールマニュアルの「3.4.3. 高度なセットアップ:その他のインストール方法」に当たるインストール方法です。
レンタルサーバの構成は下記の通りです。
/ (ルート直下はwebサーバからは参照されない) /www.xxx.jp(webサーバで参照される場所。public_html)
ダウンロードしたcake_1.1.20.7692.zipを解凍します。
app と cake フォルダを/(ルート)直下にコピーします。
(フレームワークとはいえ、webサーバから参照される場所にはおかないほうがいいと思ったので、それの対策です。)
app/webroot/ がWebサーバからアクセスされる必要があるため、この配下のファイルを /www.xxx.jp 配下に移動します。
この時点でファイルの配置は下記のような構成になっています。
/ /app /config /controllers /models /plugins /tmp /vendors /views index.php /cake /config /docs /libs /scripts app_controller.php app_model.php basics.php bootstrap.php dispatcher.php /vendors /www.xxx.jp (配下のファイルは/app/webroot/から移動したもの) index.php
あとは/www.xxx.jp/index.phpの修正です。
相対パスでROOT , APP_DIR , CAKE_CORE_INCLUDE_PATH を指定します。
if (!defined('ROOT')) { //appの上のディレクトリ define('ROOT', '..'.DS); } if (!defined('APP_DIR')) { //ROOTからみてappがどこにあるか define('APP_DIR', 'app'); } if (!defined('CAKE_CORE_INCLUDE_PATH')) { //これはindex.phpからみてcakeの上のディレクトリを指定。 define('CAKE_CORE_INCLUDE_PATH', '..'.DS); }
また、Apacheを使用してる場合、moe_rewriteが有効になっていないといけません。
自分の開発環境のApacheは
#LoadModule rewrite_module modules/mod_rewrite.so
とmod_rewriteがコメントアウトされていたので、このコメントアウトを解除します。
LoadModule rewrite_module modules/mod_rewrite.so
さらに、ApacheのDocumentRootはcakePHPのwebroot(上記の設定だと/www.xx.jp)にしておかないといけません。
自分は開発環境のDocumentRootを触りたくなかったのでApacheのaliasでやっていましたが、見事に動きませんでした。
要注意点です。
Apacheがらみでもう一点。
デフォルトだとDocumentRootは
AllowOverride None
となっているので、
AllowOverride ALL
としましょう。
参考:
CakePHP のディレクトリ構成を変更する まさにcakePHPのディレクトリ環境についてかかれてます。助かりました。