Zend Framework - Zend_Auth :: getInstance () вызывает ошибку 500 - PullRequest
1 голос
/ 03 апреля 2012

Недавно я переместил находящееся в разработке приложение Zend Framework на рабочий сервер для проверки установки.

Независимо от среды приложения и прав доступа к файлам, приложение выдает ошибку 500.После ручной отладки я сузил виновника вызова Zend_Auth::getInstance(); в application/Bootstrap.php.

Соответствующая функция:

protected function _initAutoLoad() {
    $modelLoader = new Zend_Application_Module_Autoloader(array(
        'namespace' => '',
        'basePath' => APPLICATION_PATH
    ));

    $acl = new Model_Acl();
    $auth = Zend_Auth::getInstance(); //<- this line breaks

    $frontController = Zend_Controller_Front::getInstance();
    $frontController->registerPlugin(new Plugin_AccessCheck($acl, $auth));

    return $modelLoader;
}

Среда разработки работает под управлением PHP 5.3.8 на Mac OSX, и сервер работает под управлением PHP 5.3.10 на сервере Ubuntu 11.10.

Я пытался применить те же настройки PHP на сервере, и ошибка повторяется.Я думаю, что это, вероятно, разрешение на путь, но я не сталкивался с этой проблемой раньше, и Google не особенно помогает.

Если я попытаюсь echo или var_dump что-либо до вызова Zend_Auth,Я получаю результаты.Все, что после этого неэффективно, и сервер вместо этого просто возвращает ошибку vanilla 500.

Заранее благодарим за любую помощь.

1 Ответ

3 голосов
/ 03 апреля 2012

сделать это

Zend_Session::start();

до

   $auth = Zend_Auth::getInstance(); 

Итак, окончательный код

protected function _initAutoLoad() {
    $modelLoader = new Zend_Application_Module_Autoloader(array(
        'namespace' => '',
        'basePath' => APPLICATION_PATH
    ));
Zend_Session::start();
    $acl = new Model_Acl();
    $auth = Zend_Auth::getInstance(); //<- this line breaks

    $frontController = Zend_Controller_Front::getInstance();
    $frontController->registerPlugin(new Plugin_AccessCheck($acl, $auth));

    return $modelLoader;
}

Если это не помогло, откройте index.php (внутри publicdir) и выполните

defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'development'));

Это переведет ваше приложение в режим разработки, тогда появится полная ошибка, просто опубликуйте его здесь.

...