//此处采用的是phpweb20 14章采用的方法,14张将错误氛围派发前错误以及派发中错误 //派发前的错误就是此处的try catch块,派发中的错误即ErrorController类 //如果此处不使用try catch块,那么派发前的错误将直接显示在屏幕上 //使用此处的try catch块,派发前的出现错误将记录日志,并将页面转到error.html上 require_once 'Zend/Loader/Autoloader.php'; Zend_Loader_Autoloader::getInstance()->setFallbackAutoloader(true); $logger = new Zend_Log(new Zend_Log_Writer_Null()); try { $writer = new EmailLogger($_SERVER['SERVER_ADMIN']); $writer->addFilter(new Zend_Log_Filter_Priority(Zend_Log::CRIT)); $logger->addWriter($writer); $config = new Zend_Config_Ini(APPLICATION_PATH . "/../config.ini", 'config'); Zend_Registry::set('config', $config); $logger->addWriter(new Zend_Log_Writer_Stream($config->logging->file)); $writer->setEmail($config->logging->email); Zend_Registry::set('logger', $logger); /** Zend_Application */ //require_once 'Zend/Application.php'; // Create application, bootstrap, and run $application = new Zend_Application(APPLICATION_ENV, APPLICATION_PATH . '/../settings.ini'); //把自己定义的类文件都放到library目录的Pw目录下,然后在配置文件中写入autoloadernamespaces.Pw = "Pw_"就可以自动加载了 //这里没有namespace前缀,所以要使用如下方法完成自动加载: //$application->getAutoloader()->setFallbackAutoloader(true); //Zend_Application_Module_Autoloader有一定的局限性,默认情况下他只能加载models, forms等系统定义的文件夹,自定义的不可以。 //所以此处application下只有controllers以及views文件夹,models下的DatabaseObject全部移至library $application->Bootstrap()->run(); } catch (Exception $ex) { $logger->emerg($ex->getMessage()); header('Location: /error.html'); exit; }