twitter
オフィシャルFacebook

MARINEROADスタッフブログ

RSS
  • カテゴリ
  • メンバー
一覧に戻る
systemカテゴリ

CakePHPで複数アプリケーション管理
2012年02月17日(金)


CakePHPはPHPのフレームワークです。
どちらかというと中・小規模開発に向いています。
そのため、基本的には管理できるアプリケーションは1つだけです。

しかし、1つのサイトあるいはシステムでも
複数アプリケーションを管理したいというのはよくある話です。
例えば、一般利用者向けアプリと管理者向けアプリを分けたいというような。

そんなとき弊社では、CakePHPを複数インストールするのではなく、
下記のような方法をとっています。

(前提条件)
一般利用者向けアプリと管理者向けアプリの2つのアプリケーションを管理するとします。
一般利用者向けアプリは「public」というアプリ名、
管理者向けアプリは「admin」というアプリ名とします。
CakePHPのバージョンは2.0です。

1.フォルダ構造の変更
まず、フォルダ構造を変更します。

<変更前のCakePHPフォルダ構造>
CakePHP2.0
├─app (アプリケーションフォルダ)
│ ├─Config
│ ├─Console
│ ├─Controller
│ ├─Lib
│ ├─Locale
│ ├─Model
│ ├─Plugin
│ ├─Test
│ ├─tmp
│ ├─Vendor
│ ├─View
│ └─webroot (ドキュメントルート)
├─lib
│ └─Cake
├─plugins
└─vendors


<変更後のCakePHPフォルダ構造>
CakePHP2.0
├─apps
│ ├─admin (管理者者向けアプリ用アプリケーションフォルダ)
│ │ ├─Config
│ │ ├─Console
│ │ ├─Controller
│ │ ├─Lib
│ │ ├─Locale
│ │ ├─Model
│ │ ├─Plugin
│ │ ├─Test
│ │ ├─tmp
│ │ ├─Vendor
│ │ └─View
│ │
│ └─public (一般利用者向けアプリ用アプリケーションフォルダ)
│ ※adminフォルダと構造は同じ

├─lib
│ └─Cake
├─plugins
├─vendors
└─webroot (ドキュメントルート)
├─admin (管理者者向けアプリ用ドキュメントルート)
│ └─index.php

└─public (一般利用者向けアプリ用ドキュメントルート)
└─index.php

2.HTTPサーバのドキュメントルートは「webroot」

3.各アプリ用ドキュメントルート直下のindex.phpを修正

(37行目付近)
if (!defined(‘ROOT’)) {
// 複数アプリケーション対応(パス変更)
// define(‘ROOT’, dirname(dirname(dirname(__FILE__))));
define(‘ROOT’, dirname(dirname(dirname(__FILE__))) . DS . ‘apps’);
}

 

(44行目付近)
if (!defined(‘APP_DIR’)) {
// 複数アプリケーション対応(パス変更)
// define(‘APP_DIR’, basename(dirname(dirname(__FILE__))));
define(‘APP_DIR’, basename(dirname(__FILE__)));
}

 

(74行目付近)
if (function_exists(‘ini_set’)) {
// 複数アプリケーション対応(パス変更)
// ini_set(‘include_path’, ROOT . DS . ‘lib’ . PATH_SEPARATOR . ini_get(‘include_path’));
ini_set(‘include_path’, dirname(ROOT) . DS . ‘lib’ . PATH_SEPARATOR . ini_get(‘include_path’));
}

4.URLアクセス
一般利用者向けアプリは「http://www.example.com/public」
管理者向けアプリは「http://www.example.com/admin」

 

画面が表示できたでしょうか。
以上です。ではまた。

 

Copyright (C) 株式会社マリンロード MarineRoad,Inc. All Rights Reserved.