Помогите настроить Zend Framework, включить пути на сервере - PullRequest
2 голосов
/ 04 августа 2011

Я изо всех сил пытаюсь заставить мой управляемый Zend веб-сайт работать на удаленном сервере, и мне не ясно, что не так с путями включения. Я бы очень признателен за некоторую помощь, поскольку я пробовал каждую перестановку, которую только мог придумать, и подозреваю, что упустил что-то фундаментальное.

Исключение, которое я получаю:

Message: Plugin by name 'Headtitle' was not found in the registry; used paths: Zend_View_Helper_: Zend/View/Helper/:/f5/metamusic/protected/application/views/helpers/
Stack trace:

#0 /f5/metamusic/protected/library/Zend/View/Abstract.php(1182): Zend_Loader_PluginLoader->load('Headtitle')
#1 /f5/metamusic/protected/library/Zend/View/Abstract.php(618): Zend_View_Abstract->_getPlugin('helper', 'headtitle')
#2 /f5/metamusic/protected/library/Zend/View/Abstract.php(344): Zend_View_Abstract->getHelper('headtitle')
#3 [internal function]: Zend_View_Abstract->__call('headtitle', Array)
#4 /f5/metamusic/protected/application/views/scripts/search/index.phtml(3): Zend_View->headtitle('Search')
#5 /f5/metamusic/protected/library/Zend/View.php(108): include('/f5/metamusic/p...')
#6 /f5/metamusic/protected/library/Zend/View/Abstract.php(888): Zend_View->_run('/f5/metamusic/p...')
#7 /f5/metamusic/protected/library/Zend/Controller/Action/Helper/ViewRenderer.php(908): Zend_View_Abstract->render('search/index.ph...')
#8 /f5/metamusic/protected/library/Zend/Controller/Action/Helper/ViewRenderer.php(929): Zend_Controller_Action_Helper_ViewRenderer->renderScript('search/index.ph...', NULL)
#9 /f5/metamusic/protected/library/Zend/Controller/Action/Helper/ViewRenderer.php(968): Zend_Controller_Action_Helper_ViewRenderer->render()
#10 /f5/metamusic/protected/library/Zend/Controller/Action/HelperBroker.php(277): Zend_Controller_Action_Helper_ViewRenderer->postDispatch()
#11 /f5/metamusic/protected/library/Zend/Controller/Action.php(523): Zend_Controller_Action_HelperBroker->notifyPostDispatch()
#12 /f5/metamusic/protected/library/Zend/Controller/Dispatcher/Standard.php(295): Zend_Controller_Action->dispatch('indexAction')
#13 /f5/metamusic/protected/library/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#14 /f5/metamusic/protected/library/Zend/Application/Bootstrap/Bootstrap.php(97): Zend_Controller_Front->dispatch()
#15 /f5/metamusic/protected/library/Zend/Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
#16 /f5/metamusic/public/index.php(26): Zend_Application->run()
#17 {main}  

Я не понимаю, почему он пытается включить библиотечный файл из пути приложения. Кроме того, на сервере действует ограничение open_basedir (), поэтому я должен использовать символ сервера - $_SERVER['NFSN_SITE_ROOT'] для доступа к корневому каталогу вместо /.

Итак, иерархия папок выглядит так:

/public/index.php <- the site entry point
/protected/application <- the site source
/protected/library <- the Zend library directory from zf-minimal.tar.gz

Это мой index.php:

// Define path to application directory
defined('APPLICATION_PATH')
    || define('APPLICATION_PATH', ($_SERVER['NFSN_SITE_ROOT'] . 'protected/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(
    ($_SERVER['NFSN_SITE_ROOT'] . 'protected/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();

А это мой config.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"
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0
resources.frontController.baseUrl = "/"
phpSettings.date.timezone = "Europe/London"

resources.db.adapter = PDO_MYSQL
resources.db.params.charset = "utf8"
resources.db.params.host = localhost
resources.db.params.username = ---
resources.db.params.password = ---
resources.db.params.dbname = ---

acl.roles.guest = null
acl.roles.member = guest
acl.roles.admin = member

resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"
[staging : production]

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1

1 Ответ

2 голосов
/ 05 августа 2011

Разве это не должен вызывать headTitle с большой буквы?

...