2

開発サイトをライブ サーバーにコピーし、新しい DB 接続の詳細などで構成を更新しましたが、次のエラー メッセージが表示されます。

Fatal error: Uncaught exception 'Zend_Loader_PluginLoader_Exception' with message `'Plugin by name 'IncludeStyles' was not found in the registry; used paths: Zend_View_Helper_Navigation_: Zend/View/Helper/Navigation/ Zend_View_Helper_: Zend/View/Helper/:./views/helpers/:/home/wheresrh/public_html/spz/application/views/helpers/' in /home/wheresrh/public_html/spz/library/Zend/Loader/PluginLoader.php:412 Stack trace: #0 /home/wheresrh/public_html/spz/library/Zend/View/Abstract.php(1173): Zend_Loader_PluginLoader->load('IncludeStyles') #1 /home/wheresrh/public_html/spz/library/Zend/View/Abstract.php(609): Zend_View_Abstract->_getPlugin('helper', 'includeStyles') #2 /home/wheresrh/public_html/spz/library/Zend/View/Abstract.php(336): Zend_View_Abstract->getHelper('includeStyles') #3 [internal function]: Zend_View_Abstract->__call('includeStyles', Array) #4 /home/wheresrh/public_html/spz/application/layouts/layout.phtml(19): Zend_View->includeStyles('full') #5 /home/wheresrh/public_html/spz/library/Zend/View.php(108): include('/h in /home/wheresrh/public_html/spz/library/Zend/Loader/PluginLoader.php on line 412`

そのため、ライブ サイトと開発サイトでフォルダー構造とブートストラップがまったく同じであるにもかかわらず、オートローダーがビュー/ヘルパー ディレクトリをヘルパー クラスの場所として取得できていないようです。

ヘルパー クラスを検出するオートローダーの機能に影響を与えている可能性があるものは他にあるでしょうか?

ここに私のapplication.iniがあります:

[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
autoloaderNamespaces[] = "SPZ_"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0
resources.layout.layoutPath = APPLICATION_PATH "/layouts/"
resources.db.adapter       = PDO_MySql
resources.db.params.host = localhost
resources.db.params.username = ******
resources.db.params.password = ******
resources.db.params.dbname = ******  

そして私のブートストラップ

<?php

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    protected function _initAutoload()
    {
        $moduleLoader = new Zend_Application_Module_Autoloader(array(
            'namespace' => '', 
            'basePath'  => APPLICATION_PATH));

    }

    protected function _initViewHelpers()
    {
        $this->bootstrap('layout');
        $layout = $this->getResource('layout');
        $view = $layout->getView();
        $view->doctype('XHTML1_STRICT');
        $view->headMeta()->appendHttpEquiv('Content-Type', 'text/html;charset=utf-8');
        $view->headTitle()->setSeparator(' - ');
        $view->headTitle('Sum Puzzles');
        $view->addHelperPath(APPLICATION_PATH.'/views/helpers/');
    }


}

そして、ここに私のindex.phpがあります

<?php
error_reporting(E_ALL | E_STRICT);
// 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();

たぶん、ブートストラップと構成ファイルに競合/冗長な行がありますか?

*編集現在、別のサーバーにコピーしようとしていますが、「ビュー」ディレクトリがビュースクリプトを探す場所として設定されていないため、同様のエラーが発生します。

4

3 に答える 3

1

まったく異なるタックが必要なため、別の回答を追加します。

私の経験では、あるプラットフォーム (ローカルの WinXP 開発マシンなど) で成功した後に、実稼働マシン (Linux ボックスなど) で失敗した場合は、ファイル名またはクラス名の大文字と小文字が区別されます。ファイルシステムのパスは大文字と小文字が区別されないため、Windows では問題なくスライドできますが、Linux では私の不注意が指摘されます。

あなたの場合、可能ですか?

たとえば、スタック トレースは folder について言及しています/home/wheresrh/public_html/spz/configs/application.iniautoloaderNamespace[] = "SPZ_"

于 2010-10-12T15:51:24.537 に答える
1

私のftpクライアントに何か問題があったことが判明したため、一部のファイルが不完全にアップロードされました. 新たにアップロードすると、これが修正されました。賞金を提供した後、これを解決できたのは私の運だけです。

于 2010-10-12T16:43:21.627 に答える
0

これらの値の間に矛盾はありませんか:

  1. 'SPZ_'appnamespaceの指令で与えられたapplication/config.ini
  2. ""で appnamespace として提供されるBootstrap::_initAutoloader()

一見すると、開発環境と本番環境の違いを観察している理由を説明していませんが、ロード/オートロードに影響を与えるものはすべて関連しているようです。

于 2010-09-29T14:35:56.023 に答える