電子書籍の厳選無料作品が豊富!

---------------------------
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>
-------------------------------------------------

A 回答 (1件)

公開ディレクトリ(ルート)にあるindex.phpの中においてパスの指定を現状のディレクトリ構造に合うように変更する。


通常、変更すべき定数は3つ(ROOT、APP_DIR、CAKE_CORE_INCLUDE_PATH)です。
1.* The full path to the directory which holds "app", WITHOUT a trailing DS.
define('ROOT','ほげほげ');
アプリディレクトリのある直前までのパス
2.* The actual directory name for the "app".
define('APP_DIR', 'なんちゃら');
アプリディレクトリ自体の名前
3.* The absolute path to the "cake" directory, WITHOUT a trailing DS.
define('CAKE_CORE_INCLUDE_PATH', ROOT);
変更不要かも。よく確認してもし必要なら1番ROOT以外のパスを指定する

参考URL:http://book.cakephp.org/1.3/ja/view/915/%E5%BF%9 …

この回答への補足

ご回答ありがとうございます。

教えていただいた情報を参考にファイルを変更してみました。
ページが全く表示されなかった状態から、エラーメッセージが表示されるようになったので少し前に進むことができました。

CakePHPの下記のページに沿って設定しました。
http://cakephp.jp/old_doc/ch03s04.html

今まで.htaccessのRewriteBaseを使ったことが無く、そのあたりが怪しい気がします。


---ディレクトリ構成--------------------------
[アプリケーションディレクトリ]
/var/me/mysite

[公開ディレクトリ] (ドメイン名が公開ディレクトリになっています)
/var/www/html/ドメイン名/mysite

[コアファイルディレクトリ]
/usr/lib/cake
---------------------------------------------


---公開ディレクトリのindex.phpの設定-------------------------
if (!defined('ROOT')) {
define('ROOT', DS.'var'.DS.'me');
}

if (!defined('APP_DIR')) {
define('APP_DIR', 'mysite');
}

if (!defined('CAKE_CORE_INCLUDE_PATH')) {
define('CAKE_CORE_INCLUDE_PATH', DS.'usr'.DS.'lib'.DS.'cake');
}
-------------------------------------------------------------

---.htaccessの設定]------------------------------------------------------
(1)
アプリケーションディレクトリ /var/me/mysite/.htaccess に以下を追加
RewriteBase /var/me/mysite

(2)
公開ディレクトリ /var/www/html/ドメイン名/mysite/.htaccess に以下を追加
RewriteBase /mysite

(3)
コアファイルディレクトリ /usr/lib/cake/.htaccess に以下を追加
RewriteBase /cake
-------------------------------------------------------------------------

テストのコントローラーファイルをアップ

<?php
class SampleController extends AppController {

public $name = "Sample";
public $uses = null;
public $autoRender = true;

function index(){
}

function hello(){
$this->set("content", "Hello World!");
}
}
?>

http://www.example.com/mysite/sample/helloを表示

(結果)
Missing View
[Error: The view for SampleController::hello() was not found.]
[Error: Confirm you have created the file: /var/me/mysite/views/sample/hello.ctp]
[Notice: If you want to customize this error message, create mysite/views/errors/missing_view.ctp]

この状態から抜け出すにはどのようにしたらよいか教えていただければと思います。
よろしくお願いします。

補足日時:2012/02/02 20:09
    • good
    • 0
この回答へのお礼

honoka-cha様

その後、DBの値を表示する例が掲載されているサイトの情報を参考にしてみたところ、うまく表示することができました。

環境設定は上記の補足の状態でOKだということがわかりました。

有意義な回答ありがとうございました。

環境設定が終わりCakePHPを学んでいく体制ができたのでとても嬉しいです。

お礼日時:2012/02/02 23:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!