2

Zend Framework は初めてです。

私は Apache 2.2 を実行しており、httpd.conf ファイルの DocumentRoot を Zend_Tool を使用して作成された public ディレクトリに設定しています。

public ディレクトリ内に .htaccess ファイルがあります。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

...そして index.php ファイル。

<?php

// Define path to application directory
/*defined('APPLICATION_PATH')
    || */define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));

// Define application environment
defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));

// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
    realpath(APPLICATION_PATH . '/../library'),
    get_include_path(),
)));

/** Zend_Application */
require_once 'Zend/Application.php';

// Create application, bootstrap, and run
$application = new Zend_Application(
    APPLICATION_ENV,
    APPLICATION_PATH . '/configs/application.ini'
);

$application->bootstrap()->run();

ブラウザに「http://localhost/」と入力すると、「application/views/scripts/index/」ディレクトリにあるファイル index.phtml が正常にレンダリングされます。

URL 内のコントローラーとアクション名を使用して他のビューにアクセスしようとすると、要求された URL がサーバー上に見つからないという 404 エラーが発生します。

たとえば、IndexController.php と同じディレクトリにあるコントローラー ファイル TestController.php があります。

/ TestController.php /

<?php

class TestController extends Zend_Controller_Action
{

    public function init()
    {
        /* Initialize action controller here */
    }

    public function testAction()
    {
        // action body
    }


}

"application/views/scripts/" に index.phtml というファイルを含むテスト ディレクトリを作成しました。

/ビュー/スクリプト/テスト/index.phtml /

<br /><br />
<div id="view-content">
<p>View script for controller <b>Test</b> and script/action name <b>index</b></p>
</div>

「http://localhost/test/」と入力してこのファイルをレンダリングしようとすると、要求された URL が見つからないという 404 エラーが表示されます。私が読んだすべての Zend Framework のドキュメントと、数え切れないほどの他のリソースには、このメソッドが正しくレンダリングされるはずであると記載されています。

私は何かが欠けているに違いありませんが、徹底的な検索の後、この特定の問題を抱えている人を見つけることができませんでした.

よろしくローン

4

4 に答える 4

1

2 番目の URL localhost/test が index.php を通過しているかどうかを確認できますか。そのために die() またはいくつかのデバッグステートメントを入れることができます。

于 2012-09-11T09:49:06.360 に答える
1

テストコントローラーにindexActionを作成してみてください...またはディレクトリにtest.phtml

于 2012-09-11T04:29:54.083 に答える
0

うーん、これを httpd.conf ファイルに追加してみてください:

NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot Link to yourSiteFolder exp. C:/AppServ/www/yourSite/public
ServerName youServerName exp. http://mysite.com or you ip http://xxx.xxx.xxx.xxx
 </VirtualHost>

<Directory "Link to yourSiteFolder exp. C:/AppServ/www/yourSite/public">
Options FollowSymLinks
AllowOverride All
</Directory>

これを見つけます:

#LoadModule rewrite_module modules/mod_rewrite.so

「#」を削除します。

于 2012-09-11T17:19:02.220 に答える