まずは、公開ディレクトリ上にCakePHPを配置した状態で、サイトを訪問するユーザー用と運営者用のappディレクトリを作成してみます。「http://localhost/」にアクセスすると、サイトを訪問するユーザー用アプリケーション、「http://localhost/admin/」にアクセスすると、運営者用アプリケーションをそれぞれ表示とします。
まず、Cakeアプリケーションには三つの主要な部分があります。
- CakePHPのコアライブラリは、 /lib/Cakeの中にあります。
- アプリケーションコードは、/appの中です。
- アプリケーションのドキュメントルートは、通常、/app/webrootにあります。
この各ディレクトリは、webrootを除いて、ファイルシステム内のどこにでも配置できます。 webrootは、Webサーバからアクセスできるようにする必要があります。 しかし、Cakeに場所を知らせれば、webrootフォルダをappフォルダの中から取り出すことも可能です。
最初に、「app」ディレクトリをコピーして、「admin」ディレクトリを作成します。
/ドキュメントルート / app // 訪問者用アプリケーション / admin // 運営者用アプリケーション / lib / plugins / vendors .htaccess index.php
次に、/app/webrootと/admin/webrootだけを公開ディレクトリ、残りを非公開ディレクトリに配置した状態で複数管理してみます。
公開ディレクトリを「/www」、非公開ディレクトリを「/cakephp」、訪問者用アプリケーションディレクトリを「/cakephp/app_user」、運営者用アプリケーションディレクトリを「/cakephp/app_admin」とします。
まずは、訪問者用のwebrootの直下のファイルとフォルダを「/www」を配置します。次に、運営者用のwebrootを配置する為に、「/admin」を「/www」に作成し、運営者用のwebrootの直下のファイルとフォルダを「/www/admin」を配置します。
配置が完了すると、「app / webroot」内に配置されているディレクトリやファイルを、「/ www」と「/ admin」内に移動させます。これで、訪問者用と運営者用の「webroot」の役割を果たすディレクトリの準備ができました。
次は、「残りを非公開ディレクトリに配置」します。CakePHPのコアディレクトリやアプリケーションディレクトリを「/cakephp」に移動させます。「/app」ディレクトリをコピーして、「/app_user」と「/app_admin」を作成します。
次のようなディレクトリ構造になります。
/ cakephp // 非公開ディレクトリ / app_user // 訪問者用アプリケーション / app_admin // 運営者用アプリケーション / lib / plugins / vendors / www // 公開ディレクトリ / admin // 運営者用webroot / css / files / img / js .htaccess index.php css.php test.php
最後に、webroot内に配置された「index.php」と「admin/index.php」を編集します。編集する項目は、定数「ROOT」「APP_DIR」「CAKE_CORE_INCLUDE_PATH」の3つです。
「ROOT」には「/ app_user」や「/ lib」などのディレクトリを配置したディレクトリへのパス、「APP_DIR」には「app」ディレクトリの名前、「cAKE_CORE_INCLUDE_PATH」には、CakePHPのコアを配置したディレクトリへのパスを書きます。
今回の環境では、 アプリケーションディレクトリやCakePHPコアを移動させたので、「/ www / index.php」と「/ www/admin/index.php」を次のように編集します。
「/ www / index.php」の編集箇所
/** * The full path to the directory which holds "app", WITHOUT a trailing DS. * */ if (!defined('ROOT')) { define('ROOT', . DS . 'cakephp'); } /** * The actual directory name for the "app". * */ if (!defined('APP_DIR')) { define('APP_DIR', 'app_user'); } /** * The absolute path to the "cake" directory, WITHOUT a trailing DS. * */ // for built-in server if (php_sapi_name() === 'cli-server') { if ($_SERVER['REQUEST_URI'] !== '/' && file_exists(WWW_ROOT . $_SERVER['PHP_SELF'])) { return false; } $_SERVER['PHP_SELF'] = '/' . basename(__FILE__); }
「/ html / admin / index.php」』の編集の記述は省略します。
「ROOT」は、非公開ディレクトリへのパス「 DS . ‘cakephp’」に変更し、「APP_DIR」は、それぞれのアプリケーションディレクトリ名「 ‘app_user’」「 ‘app_admin’」に変更し、「CAKE_CORE_INCLUDE_PATH」は、修正が必要ないので、そのままにします。