アプリ版:「スタンプのみでお礼する」機能のリリースについて

Zendを始めたばかりのものです。
サーバ:XPで自営 Apache2,php5
Zendをダウンロードし、Cドライブのルートに「ZendFramework-1.9.0」
という名前で配置しました。
php.iniのinclude_pathの設定も変更し、
htdocsの直下にindex.phpを作成し
<?php
require_once 'Zend/Version.php'; //ライブラリの読み込み
echo Zend_Version::VERSION; //現在のZend Frameworkのバージョンを表示
とすると、正常にバージョンが表示されます。


zendappsというフォルダーをhtdocsの中に作成し、index.phpに
<?php
require_once 'Zend/Controller/Front.php';
Zend_Controller_Front::run('../zendapps/controllers');
とするとエラーになります。(エラーは長いので後述)
'../zendapps/controllers'の部分かとも思いますが、
お分かりになる方、教えていただけると幸いです。

エラーの内容
Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (error)' in C:\ZendFramework-1.9.0\library\Zend\Controller\Dispatcher\Standard.php:242 Stack trace: #0 C:\ZendFramework-1.9.0\library\Zend\Controller\Front.php(946): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #1 C:\ZendFramework-1.9.0\library\Zend\Controller\Front.php(212): Zend_Controller_Front->dispatch() #2 C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\zendapps\index.php(3): Zend_Controller_Front::run('../zendapps/con...') #3 {main} thrown in C:\ZendFramework-1.9.0\library\Zend\Controller\Dispatcher\Standard.php on line 242

A 回答 (2件)

補足を見たところ、どうもZend Frameworkの基本的な使い方を理解していないように思う。

ちょっと、全部説明するのは大変だ。根本的な部分の基本的な使い方がわかってないと、動作確認などはちょっと大変だと思う。

1.まず、回答したZendFrameworkのフォルダは、ただハードディスクに入れておくだけで、この中身は一切触れてはいけない、と考えたほうがいい。そして、php.iniのライブラリパスに、このフォルダのlibフォルダのパスを追加し、フレームワークを利用できるようにする。

2.アプリケーションの作成は、ZendFrameworkのフォルダではなく、サーバーの公開フォルダ(Apacheならhtdocs)内に作成をする。Webアプリのフォルダを作り、その中にapplicationを作り、更にその中にcontrollers,models,viewsを作る。viewsの中には、更にscriptsを作り、その中に更にモジュール名のフォルダを作り、その中に各ビューファイルを配置する。コントローラーとモデルはそれぞれのフォルダに直におく。

3.アプリのフォルダ内に.htaccessでサーバーのリダイレクト設定を用意し、更にindex.phpに「フロントコントローラー」というものを作成する。

4.作成するモジュール名を決定し、そのモジュールのビューとコントローラーを作る。モデルはデータベースを使わないならいらない。ここまでを完全に作ったところで、初めて実際にブラウザからアクセスして動作確認ができる。

それぞれのファイルやクラス名などは、すべて命名規則が決まっているので、それに従って作る必要がある。それぞれ全部細かく記述しようとすると、ちょっとこの解答欄ではたりない。最近の書籍はちょっとわからないが、CodeZineの連載を1から順に読んでいけば、ある程度理解できるんじゃないだろうか。

http://codezine.jp/article/corner/42
    • good
    • 0
この回答へのお礼

お教えいただいた1から4大変参考になりました。
urlを熟読&実習してみます。
重ね重ねありがとうございました。

お礼日時:2009/08/13 10:15

<?php


require_once 'Zend/Controller/Front.php';
Zend_Controller_Front::run('../zendapps/controllers');

この部分は、一般的な階層構造とは違うが、MVC関係の配置がどうなっているんだろうか。通常は、application内にcontrollers/models/viewsのディレクトリが用意され、

<?php
require_once 'Zend/Controller/Front.php';
Zend_Controller_Front::run( './application/controllers');

こんな具合になるはずだと思う。意図的にapplicationの階層を取り払っているんだろうか? そちらで作っているアプリのディレクトリ構成が見えないので、パスが正しいのかどうか判断ができない。

それと、controllersには、IndexController.phpは配置済みだろうか。またviews内には、index/index.phtmlは作成済みだろうか。コントローラーとビューは最低限ないと動作確認のしようがないと思う。既に作成済みなら、ファイル名とディレクトリの構成、およびクラス名などが正しく命名規則に沿って書かれているか再確認する。

また、アクセス先のアドレスはどのように指定しているだろうか。http://ドメイン/モジュール/アクション という形で指定することになるはずだが、このあたりは作成したモジュール・コントローラときちんとあわせてあるだろうか。そのへんを一通りチェックしてみる、ということになると思う。

この回答への補足

C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\zendapps\index.php
*このindex.phpが記述エラーを起こします。

-------
>この部分は、一般的な階層構造とは違うが、MVC関係の配置がどうなっているんだろうか。通常は、application内にcontrollers/models/viewsのディレクトリが用意され、
C:\ZendFramework-1.9.0--この下に
\bin,\demos,\externals,\extras,\library,\testsのフォルダーがあります。
この、\libraryの下に\zend\Applicationがあります。
C:\ZendFramework-1.9.0\library\zend\Application
*Cドライブの直下に、\ZendFramework-1.9.0(解凍したままのフォルダ名)
は違和感があったのですが、本に「解凍したらそのままCドライブの直下に・・・」
の記述がありました。

C:\ZendFramework-1.9.0\library\Zend\Application\Module
までは、ご指摘の通りですが、\Moduleの中にviewはありません。

-----
>それと、controllersには、IndexController.phpは配置済みだろうか。またviews内には、index/index.phtmlは作成済みだろうか。コントローラーとビューは最低限ないと動作確認のしようがないと思う。既に作成済みなら、ファイル名とディレクトリの構成、およびクラス名などが正しく命名>規則に沿って書かれているか再確認する。
どちらも配置されておりません。

*入門書の選択を間違えたようです。
Zendのインストールから書いてある入門書(丁寧に)、サイトなどご存知ならお教えください。
私が読んだのは「PHPフレームワーク完全マスター」です。

補足日時:2009/08/12 11:17
    • good
    • 0
この回答へのお礼

早速お返事頂き、ありがとうございます。

お礼日時:2009/08/12 11:16

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