For Want Of A Better Word

CakePHP 2 1つのcakeで複数のアプリを管理する設定

      2015/08/11

【参考】http://www.marineroad.com/staff-blog/3159.html

設定前の状態

  • ドキュメントルート: /var/www/html
  • フロントコントローラー:/var/www/html/form/index.php (.htaccessのrewrite_baseも修正済み)
  • appフォルダ : /var/www/cake/app
  • cakeフォルダ: /var/www/cake/lib/Cake

やりたいこと

appを一つじゃなくて複数持ちたい。
イメージとしては

/var/www/cake/apps/ app1
app2
app3

のようにして

/var/www/html/app1/index.php(app1のフロントコントローラー)
/var/www/html/app2/index.php(app2のフロントコントローラー)
/var/www/html/app3/index.php(app2のフロントコントローラー)

というようにアクセスできるようにしたい。

  • Controllerレベルでしか分離できない所を、分離できる。

(AppController系とか、DBそのものとか。)

  • そもそも、1アプリ内だとControllerのファイル名でしか区切りされないのが、見た目上わかりづらいのもいや。(アプリが増えれば、同じ場所にひたすらController・モデルが増える。。。)
  • 分離できれば、メンテナンスも楽だよね。

ということでやってみる。

こんな感じでアプリフォルダを複数作成

app側

フロントコントローラー側

このままmで、動いていた「form/posts/」にアクセスすると、
error_logに下記のメッセージが

PHP Fatal error:Can’t find application core file. Please create /var/www/cake/app/Config/core.php

core.phpが見つかりませんよーと。これを指定しているのはフロントコントローラーなので。。。
各フロントコントローラーindex.phpの修正

formフォルダのフロントコントローラー

■修正前

■修正後

 

※ ちなみにこっちはドキュメントルート側のディレクトリは変わっていないので、.htacessは修正なし。

app2フォルダのフロントコントローラー

■修正前はformと同じなので省略
■修正後

★★ htaccessのrewirite_baseの設定をしてみたら、app2はそのままでも動いちゃった。→ということは、form側のhtaccessにもいらないのかと思ってコメントアウトしたら、なくても動いた。。。。ありや?

とりあえず、これでOK。複数アプリ無事稼働!!

以上。

 - cake

  関連記事

[Cake]ログイン時に元見ていたページに遷移させる。

よくある、コンテンツからログインしたときに、元のページに飛ぶという奴。 cake …

CakePHP2.0導入 ① 1系と2系の違い

[参考サイト]2.0移行ガイド http://book.cakephp.org/ …

cakephp フォームデータの有無、フォームデータの内容の判定方法

入力データに応じてバリデーションを変更するので、 入力データの有無から確認しない …

Cake2.3 ファイルアップロードフォームとtrantsionコンポーネントとXform

ファイルをアップロードする以外のフォームは transitionとXformで結 …

Cake PHP ファイルの操作

【参考】http://book.cakephp.org/2.0/ja/core- …