CakePHPのディレクトリの構成について

このQ&Aのポイント
  • CakePHPのディレクトリの構成について詳しく教えてください。
  • apps/app1とwww/app1の関係について教えてください。
  • CakePHPのディレクトリ構成にはどのような意味と用途があるのでしょうか?
回答を見る
  • ベストアンサー

CakePHP のディレクトリの構成について

現在 CakePHP を勉強しています。 最初から壁にぶち当たってしまいました。 参考にしているサイトの内容は以下のようになっているのですが apps/app1 と www/app1 の関係がよくわかりません。 シロート的なイメージとして、CakePHP では apps/app1 で色々と作成したものが(自動的に)www/app1 に複写される。 そしてブラウザからのアクセスは www/app1 になる???? そんなイメージなのですが、その辺を含めて勘違いしていると思います。 この2つのディレクトリの意味と用途?を教えてもらえないでしょうか? +/home/example ・・・ ホームディレクトリ   |   +cake ・・・ cake ディレクトリ   |   +apps ・・・ CakePHPで作成するアプリケーション用ディレクトリ   | |   | +app1 ・・・ CakePHPで作成するアプリ1のappディレクトリ   | | |   | | +config, docs, libs, scriptsディレクトリとファイル   | |   | +app2 ・・・ CakePHPで作成するアプリ2のappディレクトリ   |   |   |   +config, docs, libs, scriptsディレクトリとファイル   |   +www ・・・ ウェブで公開されるディレクトリ(DocumentRoot)     |     +app1 ・・・ CakePHPで作成するアプリ1 の webroot     |     +app2 ・・・ CakePHPで作成するアプリ2 の webroot     |     +other ・・・ CakePHP以外のアプリを使う場合のディレクトリ

  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • yamada59
  • ベストアンサー率74% (29/39)
回答No.1

おそらく参考にするサイトを間違っていると思います。 このディレクトリ構成は、CakePHP のコアライブラリを複数のアプリケーションから共用するようになっているので、初心者なら標準的なインストールを行ったほうがいいでしょう。 > シロート的なイメージとして、CakePHP では apps/app1 で色々と作成したものが(自動的に)www/app1 に複写される。 ということはありません。 apps/app1、apps/app2 はコントローラやモデルなどのアプリケーションコードを配置するディレクトリ (標準では cake/app ディレクトリ) で、www/app1、www/app2 は画像やスタイルシートなどを配置するウェブルート (標準では cake/app/webroot ディレクトリ) と考えられます。

参考URL:
http://book.cakephp.org/ja/view/35/Advanced-Installation
yamada009
質問者

お礼

ありがとうございます。

関連するQ&A

  • CakePHPのディレクトリ構成について(app)

    CakePHPのapp内のディレクトリ名について教えてください。 CakePHPを使ってみたいと思いインストールまで実行しました。 作成したプログラムはappディレクトリ内に配置するようですが、 公式ドキュメントとapp内のディレクトリ名が違います。 バージョン:CakePHP ver 2.0.3 安定版 Cookbook(公式ドキュメント)を見ると 「2.3 CakePHPのフォルダ構造」 http://book.cakephp.org/ja/view/899/CakePHP%E3%81%AE%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E6%A7%8B%E9%80%A0 Appフォルダは controllers libs models views ・・・ と記載してあります。 実際にappディレクトリを見てみると Controller Lib Model View ・・・ というように始めの文字が大文字になっていて複数形がなくなっています。 これはバージョンの違いによるものなのでしょうか? 公式ドキュメントでappのcontrollerディレクトリにファイルを作ってアップロードとなっていたら、実際にはappのControllerディレクトリにファイルをアップロードすれば良いのでしょうか? それとも、Controllerディレクトリとは別にマニュアルと同じ名前controllerディレクトリを作成してその中にファイルをアップロードするのでしょうか?

    • ベストアンサー
    • PHP
  • CakePHPの表示エラーについて

    --------------------------- CakePHPバージョン:1.3.14. PHPバージョン:5.3.3 Apacheバージョン:2.2.3 --------------------------- CakePHPを始めたばかりです。 インストールを完了し、トップページでのhello world!の表示は出来ました。 (トップページだけは特例のようですね) http://www.example.com/test/hello という形でhello world!を表示させたいと思い下記のようにファイルを作りUPしましたが、エラーが表示されてしまいました。 何を変更すればうまくファイルが表示されるのかを教えていただければと思います。 test_controller.php ---------------------------------------------------------- class TestController extends AppController { public $name = "Test"; public $uses = null; public $autoRender = true; function index(){ } function hello(){ $this->set("content", "Hello World!"); } } ---------------------------------------------------------- http://www.example.com/test/hello (エラーメッセージ) ------------------------------------------------------------------------------- Warning: include(cake/bootstrap.php): failed to open stream: No such file or directory in /var/www/html/example.com/test.php on line 76 Warning: include(): Failed opening 'cake/bootstrap.php' for inclusion (include_path='/var/www:/var/www/html/:.:/php/includes:/usr/share/pear') in /var/www/html/example.com/test.php on line 76 Fatal error: CakePHP core could not be found. Check the value of CAKE_CORE_INCLUDE_PATH in APP/webroot/index.php. It should point to the directory containing your /cake core directory and your /vendors root directory. in /var/www/html/example.com/test.php on line 77 ------------------------------------------------------------------------------- bootstrap.phpというファイル名が出てきているので、bootstrap.phpを見てみましたが何が間違っているのかはわかりません。 include_pathも出てきているので、cakephpのパスを通しておく必要があるのでしょうか? bootstrap.php ------------------------------------------------------------- if (!defined('PHP5')) { define('PHP5', (PHP_VERSION >= 5)); } if (!defined('E_DEPRECATED')) { define('E_DEPRECATED', 8192); } error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT); require CORE_PATH . 'cake' . DS . 'basics.php'; $TIME_START = getMicrotime(); require CORE_PATH . 'cake' . DS . 'config' . DS . 'paths.php'; require LIBS . 'object.php'; require LIBS . 'inflector.php'; require LIBS . 'configure.php'; require LIBS . 'set.php'; require LIBS . 'cache.php'; Configure::getInstance(); require CAKE . 'dispatcher.php'; ------------------------------------------------------------- (全体の設定状況など) .htaccess httpd.conf あたりの設定が間違っているのかと思い、ネットで情報を調べていろいろ変更したりしてみましたがダメでした。 あと一つ気になる点としては、公開ディレクトリ以外をUPしているディレクトリ名をcakeにしてしまっているところです。(cakeというディレクトリ名はダメとかあるのでしょうか?) ディレクトリの構成と設定の内容を下記に記載します。 [/var/cake]プログラムファイル /var/cake/app /var/cake/plugins /var/cake/vendors /var/cake/.htaccess /var/cake/index.php 公開ディレクトリ(ルート) css files img js .htaccess css.php index.php ############################################################## .htaccessの設定 ############################################################## 3か所ほど設定すべきところがあるようなので下記のように設定しました。 /var/cake/.htaccess ------------------------------------------------- <IfModule mod_rewrite.c> RewriteEngine on RewriteBase /cake RewriteRule ^$ app/webroot/ [L] RewriteRule (.*) app/webroot/$1 [L] </IfModule> ------------------------------------------------- /var/cake/app ------------------------------------------------- <IfModule mod_rewrite.c> RewriteEngine on RewriteBase /cake/app  RewriteRule ^$ webroot/ [L] RewriteRule (.*) webroot/$1 [L] </IfModule> ------------------------------------------------- 公開ディレクトリの.htaccessの設定 ------------------------------------------------- <IfModule mod_rewrite.c> RewriteEngine On RewriteBase /  RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !\.(cgi|css|gif|jp?g|png)$ RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] </IfModule> -------------------------------------------------

    • ベストアンサー
    • PHP
  • CakePHPのコントローラの作成

    PHP初心者です。 CakePHPをインストールし試しにTestControlerを作成したのですが、ページが開きません。 PageNotFoundになります。 考えられる原因が分かれば教えて下さい。 【やったこと】 ・ [CakePHP root]\app\Controller に TestController.php を作成。 <?php App::uses('AppController', 'Controller'); class TestController extends AppController { } ・ URLにアクセス http://[CakePHP root]/Test ⇒ Not Found http://[CakePHP root]/test ⇒ Not Found http://[CakePHP root]/app/webroot/index.php?url=test ⇒ CakePHPのindex.phpが表示される。 http://[CakePHP root]/app/webroot/index.php?url=Test ⇒CakePHPのindex.phpが表示される。 以下のサイトを参考にしました。mod_rewriteが動いていない可能性がある ということなので、URL直接指定もしてみましたがダメでした。 http://codezine.jp/article/detail/768?p=2 よろしくお願いします。

    • ベストアンサー
    • PHP
  • CakePHPの .htaccess設定について

    CakePHPをVPSで構築したサーバー(Linux)にインストールしました。 .htaccess(mod_rewrite)の設定がうまくいっていないようなので対処の方法を教えてください。 [環境] PHP 5.3.3 Apache 2.3.3 CakePHP 1.3.15 mod_rewriteが動いてるのはチェック用のプログラムで確認しました。 controllerとViewファイルを作り、文字の表示は成功しています。 フォームの実験を行った時にフォーム送信後のURL表示がうまくいっていません。(get/post共に) [書籍を参考にしたプログラム] Sampleコントローラーを作り、Viewの中にSampleディレクトリを作りその中にindex.ctpファイルを設置。フォームにテキストを入力して送信ボタンを押すと、テキストが表示されるプログラムです。 [コントローラー]sample_controller.php class HelloController extends AppController { public $name = 'Hello'; public $uses = null; public $layout = "hello"; function index(){} function sendForm(){ ~フォームで送られたテキストを表示(プログラムは省略)~ } } [index.ctp]のフォームのHTML <form method="post" action="./sendForm"> ~省略~ <input type="submit" /> </form> http://www.example.com/sampleでフォームを開きテキストを入力して送信ボタンを押すと http://www/example.com/sample/sendForm というURLになるはずなのですが、 http://www.example.com/sendForm となってしまいます。 試しにブラウザから「http://www/example.com/sample/sendForm」というURLを入力してみますと、フォームで入力したデータは表示されませんが、ページ自体は表示されます。 もう一つ、index.ctpの<form method="post" action="./sendForm">のアクションのパスを /sample/sendForm に変更してみますとデータも表示され、求めた結果になります。 以前、別の環境でこのプログラムを動かしたときは、<form method="post" action="./sendForm">のままでうまくいったので、.htaccessのファイルの設定に問題があると予想されます。 下記にcakePHPの設定情報を記載しますので、間違っている部分を指摘していただければと思います。 ※ディレクトリの構成は下記のページの「3.4.3. 高度なセットアップ:その他のインストール方法」を参考にしています。 http://cakephp.jp/old_doc/ch03s04.html [アプリケーションディレクトリ] /home ____/me ________/mysite ____________/config ____________/controllers ____________/models ____________/plugins ____________/tmp ____________/vendors ____________/views ____________index.php ____________.htaccess→「htaccessファイル1」● [公開ディレクトリ] /var ____/www ________/html ____________/example.com→ドキュメントルート _______________/css _______________/files _______________/img _______________/js _______________.htaccess→「htaccessファイル2」● _______________css.php _______________favicon.ico _______________index.php [コアファイルディレクトリ] /usr ____/lib ________/cake ____________/cake ________________/config ________________/docs ________________/libs ________________/scripts ________________app_controller.php ________________app_model.php ________________basics.php ________________bootstrap.php ________________dispatcher.php ____________/vendors ____________/plugins ____________index.php ____________.htaccess→「htaccessファイル3」● 「htaccessファイル1」(アプリケーション) -------------------------------------------------- <IfModule mod_rewrite.c> RewriteEngine on   RewriteBase /cake/app→■追加  RewriteRule ^$ webroot/ [L] RewriteRule (.*) webroot/$1 [L] </IfModule> ------------------------------------------------- 「htaccessファイル2」(公開) -------------------------------------------------- <IfModule mod_rewrite.c> RewriteEngine On   RewriteBase / →■追加  RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] </IfModule> -------------------------------------------------- 「htaccessファイル3」(コア) -------------------------------------------------- <IfModule mod_rewrite.c> RewriteEngine on   RewriteBase /cake→■追加 RewriteRule ^$ app/webroot/ [L] RewriteRule (.*) app/webroot/$1 [L] </IfModule> -------------------------------------------------- 疑問点は下記のようになっています。 (1)追加した部分のRewriteBaseはこれで良いのか? (2)RewriteRule ^$ webroot/ [L] RewriteRule (.*) webroot/$1 [L] の部分はこのままで良いのか?webroot部分の変更は必要か? (3)RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]の部分はこのままで良いのか?

    • ベストアンサー
    • PHP
  • CakePHPでモデルを共有する複数のアプリ

    Cake初心者です。お手柔らかにお願いします。 会員制のサイトを作るときに会員用のページと非会員用のページをアプリ単位で分けてしまいたいのですが、同じファイルを両方に用意することが多くなってしまいます。 実際はControllerとViewがそれぞれわかれていればいいだけなので、うまく拡張して複数のアプリを管理しやすくできないでしょうか? 理想としては [非会員用] apps/public/Controller apps/public/View apps/public/Webroot [会員用] apps/user/Controller apps/user/View apps/user/Webroot という風にして、それ以外のものを共有するというものです。 ヒントだけでも良いのでよろしくお願いします。

    • ベストアンサー
    • PHP
  • CakePHPでスキーマファイルが読み込めない

    お世話になります。 現在WindowsのXAMPP上でCakePHPを使ってアプリケーションの開発を行っております。 スキーマファイルを作成し、cakeコマンドからテーブルの作成をしようとしているのですが、 cakeコマンドを実行すると以下の様なエラーが表示されます。 C:\xampp\htdocs\firstcake\app\Console>cake schema create Welcome to CakePHP v2.3.10 Console --------------------------------------------------------------- App : Console Path: C:\xampp\htdocs\firstcake\app\Console\ --------------------------------------------------------------- Cake Schema Shell --------------------------------------------------------------- The chosen schema could not be loaded. Attempted to load: File: C:\xampp\htdocs\firstcake\app\Console\Config\Schema\schema.php Name: 通常schema.phpファイルは~app\Config\Schemaフォルダに配置するのですが上述のエラーが表示され読み込まれなかったため、~app\Console\Config\Schemaフォルダを作成し配置しました。 それでも上記のエラーメッセージが表示されます。 そこでCakePHPにおいてスキーマファイルが読み込めなかった際の対処法についてご教示頂きたく投稿しました。 長文となりましたが、ご協力宜しくお願い致します。 ★環境 OS : Windows 7 Home Premium (システムドライブ:C) XAMPP : ver1.8.3(インストールせず、C:\xamppフォルダへコピペで配置)。 CakePHP: ver2.3.10 ★フォルダ構造 ・XAMPPのインストールフォルダ: C:\xampp ・アプリケーションルート: C:\xampp\htdocs\firstcake(CakePHPを配置) ・schema.phpのデフォルトの配置場所: C:\xampp\htdocs\firstcake\app\Config\Schema\schema.php ・schema.phpを別途配置した場所: C:\xampp\htdocs\firstcake\app\Console\Config\Schema\schema.php ・環境変数 PATH = C:\xampp\htdocs\firstcake\app\、C:\xampp\php

    • ベストアンサー
    • PHP
  • cakephp1.2で画像が出力できない!

    お世話になります。cakephp1.2で解決できないことがあります。 それは画像の出力です。 app/webroot/img配下にtest.jpgがある場合、 どのように表記したらビューで出力できるでしょうか? <?php echo $html->image('test.jpg') ; ?> や絶対パス、cake.power.pngなどの出力テスト をいろいろ試しましたが、どうしても解決できません>< どうかみなさま宜しくお願い致します。 暫くプログラマの方と連携がとれないので、 こちらに質問させて頂きました。。。

    • ベストアンサー
    • PHP
  • さくらインターネットにCakePHPをインストール

    さくらインターネットにCakePHPをインストールしようとしたのですが、どうやっても画面が開かず、ネットでもさんざん調べたのですが解決できなかったので質問いたします。 まずは開発中のサイトを公開しようとサーバーにアップロードしたのですが、400 Forbiddenや403 Bad Request画面がが出てしまい先に進めませんでした。app/webrootのindexに直接アクセスすると画面は真っ白な状態になります。 そこで、アクティブで使っていないドメインがあったのでそちらに何も手を加えていないまっさらなCakePHPをインストールしてみました。ダウンロードして解凍しただけのものですので、CakePHPのマニュアルで言えば「3.3.1 開発(Development)」と同じ状況だと思います。 ここで同じように、 http://www.example.com/cake_1_3/ にアクセスすると、400 Bad Requestが出てしまいました。 また http://www.example.com/ にアクセスすると、403 Forbiddenが出てしまいます。 さらに http://www.example.com/cake_1_3/app/webroot/index にアクセスしてみたところ、今度は真っ白な画面ではなく500 Internal Server Errorが出てしまいました。 .htaccessを見直してみたのですが、ほかの人と見比べてもとくに違いはありませんし、何が間違っているのかもはや見当もつきません。もし、何か手がかりになる情報をご存じの方がいらしたらご教示いただけますでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • cakePHP導入 XREA+について

    同じタイトルの質問から、検索して辿り着いたURL http://massat.jp/2007/01/08/110 を参考にXrea+ (有料版)の設定をしています。 しかし、動いてなさげです。 ディレクトリツリー: root / この直下に、cakephpをインストールしました。 次に、 mv -r root/cakephp/app/webroot/* root/public_html/dev.hoge.com/. でファイルを移動。 移動先のdev.hoge.com/index.phpを、 if (!defined('ROOT')) { define('ROOT', DS.'cakephp'); } /** * The actual directory name for the "app". * */ if (!defined('APP_DIR')) { define('APP_DIR', 'app'); } /** * The absolute path to the "cake" directory, WITHOUT a trailing DS. * */ if (!defined('CAKE_CORE_INCLUDE_PATH')) { define('CAKE_CORE_INCLUDE_PATH', ROOT); } と、編集しました。 これでいい筈なので、一緒にパッケージれていたtest.phpも、同じ内容で編集しました。 test.phpを実行させると、次のエラーが出ます。 Warning: set_time_limit() [function.set-time-limit]: Cannot set time limit in safe mode in /virtual/taokato/public_html/dev.bit-station.com/test.php on line 27 Warning: include(cake/bootstrap.php) [function.include]: failed to open stream: No such file or directory in /virtual/taokato/public_html/dev.bit-station.com/test.php on line 84 Warning: include() [function.include]: Failed opening 'cake/bootstrap.php' for inclusion (include_path='/cakephp:/cakephp/app/:.:/usr/local/lib/php') in /virtual/taokato/public_html/dev.bit-station.com/test.php on line 84 Fatal error: CakePHP core could not be found. Check the value of CAKE_CORE_INCLUDE_PATH in APP/webroot/index.php. It should point to the directory containing your /cake core directory and your /vendors root directory. in /virtual/taokato/public_html/dev.bit-station.com/test.php on line 85 これは、設定ミスをしているのでしょうか? 解説通りにしたはずなんですけど・・・。 参考にしたURL http://oshiete1.goo.ne.jp/qa5421358.html http://www.wakatta-blog.com/cakephpxrea.html http://www.cakephp.jp/doc/ch03s04.html#id4797748 http://massat.jp/2007/01/08/110 ご教示のほど、よろしくお願いします。

    • 締切済み
    • PHP
  • cakephpのトップ画面変更について

    /web.com/public_html/が公開ディレクトリとします。 公開ディレクトリ配下に/app/webrootのindex.phpを配置すると、http://web.comにアクセスした人がcakeのデフォルトページにアクセスしてしまいます。(添付画面のような表示) index.phpにはweb.comのトップ画面(普通にクライアントが見てほしい画面)を作りたいのですが、この場合どうしたらよいのでしょうか?? あまりindex.phpにcakeは使わず、各アプリケーション(たとえばFORM等)をcakeで作るというイメージなんでしょうか? cakeは1.3.14で、サーバはxserverを使っています。 よろしくお願いします。

    • 締切済み
    • PHP

専門家に質問してみよう