3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

(PHP)cakePHPのインストール(ディレクトリの設定)

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ディレクトリ環境についてかかれてます。助かりました。