Invalid signature

ここは俺の日記帳

mod_rewrite を使わない場合の構成・設定[1]

CakePHP v2.4.6

前回、CakePHP のウェルカムページを見れるところまで進んだ。
しかし、スタイルが適用されていない。
ディレクトリ構造を提示しつつ整理することにする。

①app を public_html の外に設置したパターン

前回用いた構成はコレ。

この各ディレクトリは、webrootを除いて、ファイルシステム内の
どこにでも配置できます。
引用元: http://book.cakephp.org/2.0/ja/installation/advanced-installation.html#cakephp

ということなので、可能な限り public_html 以下に置くファイルは減らそうと、
はじめは以下の構造にした。

/┬─app
 ├─lib
 └─public_html
  

public_html には webroot の中身を設置。

index.php の編集

define('ROOT', DS. 'home' . DS . 'ユーザー名');
define('APP_DIR', 'app');
define('CAKE_CORE_INCLUDE_PATH', ROOT . DS . 'lib');
  

上のような状態ではスタイルが適用されなかった。 スタイルシートのパスは
"/app/public_html/css/スタイルシート名" となっていた。
webroot を public_html に改名してもダメ。 WEBROOT_DIR をルートからの
絶対パスにしても、頭に "/app" が付いてしまいダメ。

②app を public_html の下に設置したパターン

/┬─lib
 └─public_html─app
  

index.php の編集

define('ROOT', DS. 'home' . DS . 'ZombieCake' . DS . 'public_html');
define('APP_DIR', 'app');
define('CAKE_CORE_INCLUDE_PATH', DS. 'home' . DS . 'ZombieCake' . DS . 'lib');
  

上の構成に加え、webroot を public_html に改名したところスタイルが反映された。
スタイルシートのパスは①と同じだった。

色々こねくり回していると、どうやらスタイルシートのパスは
public_html下を起点にした相対パスになっているらしい。
この事を証明すべく構成①で index.php の WEBROOT_DIR を
以下のように定義したところ、スタイルが反映された。

define('WEBROOT_DIR', DS . '..');
  

パスは次の通り "/app/../css/style.css"
app から一階層もどり、public_html に設置してある css ディレクトリに
アクセス出来たようだ。 public_html下に app という名前のディレクトリは
無いのだが…
 とにかく、スタイルシートのパスの頭に "/app" が付いていたため、
ルート直下に app というディレクトリがあると想定していると思い込み、
非常に混乱した。