Zend Framework - Zend_Auth :: getInstance()导致500错误

时间:2012-04-03 05:11:53

标签: zend-framework lamp

我最近将一个正在开发的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;
}

开发环境在Mac OS X上运行PHP 5.3.8,服务器在Ubuntu 11.10服务器上运行PHP 5.3.10。

我尝试在服务器上应用相同的PHP设置,但错误仍然存​​在。我认为这可能是一个路径许可,但我之前没有遇到过这个问题,Google也没有特别的帮助。

如果我在echo来电之前尝试var_dumpZend_Auth,我会得到结果。之后的任何事情都是无效的,服务器只会返回一个vanilla 500错误。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

这样做

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(在公共目录内)并执行

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

这将使您的应用程序处于开发模式,然后将出现完整错误,只需将其发布在此处。