【发布时间】:2012-10-07 18:41:46
【问题描述】:
我在本地网络服务器上进行了 ZF 配置,一切正常。 现在我把它放在我的主机上的互联网上,当我加载网站时,我在屏幕上收到许多警告/致命错误。有人知道原因是什么吗?
问候埃里克
例子:
警告:is_readable() [function.is-readable]:open_basedir 限制生效。 文件(/usr/local/reserved///sites/ericversteeg.nl/www/application/../library/Custom/Zend/Application/Resource/View.php)不在允许的路径中:(/ usr/local/reserved/index.php:/sites/ericversteeg.nl/:/tmp) 在 /sites/ericversteeg.nl/www/library/Zend/Loader.php 第 198 行
警告:is_readable() [function.is-readable]:open_basedir 限制生效。文件(/usr/local/reserved///sites/ericversteeg.nl/www/application/../library/Custom/Zend/Application/Resource/View.php)不在允许的路径中:(/ usr/local/reserved/index.php:/sites/ericversteeg.nl/:/tmp) 在 /sites/ericversteeg.nl/www/library/Zend/Loader.php 第 198 行
最后是致命的:
致命错误:未捕获异常“Zend_Controller_Response_Exception”,消息“无法发送标头;标头已在 /sites/ericversteeg.nl/www/library/Zend/Loader.php 中发送,第 198 行在 /sites/ericversteeg.nl/www/library/Zend/Controller/Response/Abstract.php:323 堆栈跟踪: #0 /sites/ericversteeg.nl/www/library/Zend/Controller/Response/Abstract.php(341): Zend_Controller_Response_Abstract->canSendHeaders(true) #1 /sites/ericversteeg.nl/www/library/Zend/Controller/ Response/Abstract.php(768): Zend_Controller_Response_Abstract->sendHeaders() #2 /sites/ericversteeg.nl/www/library/Zend/Controller/Front.php(992): Zend_Controller_Response_Abstract->sendResponse() #3 /sites/ ericversteeg.nl/www/library/Zend/Application/Bootstrap/Bootstrap.php(97): Zend_Controller_Front->dispatch() #4 /sites/ericversteeg.nl/www/library/Zend/Application.php(366): Zend_Application_Bootstrap_Bootstrap ->run() #5 /sites/ericversteeg.nl/www/public/index.php(28): Zend_Application->run() #6 {main} 抛出 /sites/ericversteeg.nl/www/library/Zend /Controller/Response/Abstract.php 第 323 行
我的 index.php :
date_default_timezone_set('Europe/Paris');
// 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();
我的引导
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap {
public function _initAutoloader() {
$autoloader = new Zend_Application_Module_Autoloader(array(
'namespace' => '',
'basePath' => APPLICATION_PATH,
'fallbackAutoloader' => true
));
return $autoloader;
}
protected function _initConfig() {
Zend_Registry::set('config', new Zend_Config_Ini(
APPLICATION_PATH . '/configs/application.ini',
APPLICATION_ENV,
array('allowModifications' => true)
));
$router = Zend_Controller_Front::getInstance()->getRouter();
$router->addConfig(new Zend_Config_Xml(APPLICATION_PATH . '/routes.xml'));
}
protected function _initDbAdapter() {
$this->bootstrap('db');
$db = $this->getResource('db');
if (!is_null($db)) {
Zend_Registry::set('db', $db);
} else {
throw new Zend_Exception('Cannot connect to database');
}
}
protected function _initSession() {
$resource = $this->getPluginResource('session');
Zend_Session::setOptions($resource->getOptions());
$ns = new Zend_Session_Namespace('Eric_website');
Zend_Registry::set('session', $ns);
}
protected function _initLog() {
//Zend_Registry::set('logger', new Custom_Zend_Log());
// Chrome PhpConsole
if (APPLICATION_ENV == 'development') {
Custom_PhpConsole::setEnabledOnServer();
if (Custom_PhpConsole::isEnabledOnClient()) {
Custom_PhpConsole::start(true, true, dirname(__FILE__));
//Custom_PhpConsole::$ignoreRepeatedEvents = true;
}
}
// Dummy debug function in case PhpConsole is not used
if (!function_exists('debug')) {
function debug() { }
}
$logger = new Zend_Log();
// firebug writer voor development omgeving
$writer = new Zend_Log_Writer_Firebug();
$writer->setEnabled(true);
$logger->addWriter($writer);
Zend_Registry::set('logger', $logger);
}
protected function _initView() {
// Initialize view
$view = new Zend_View();
$view->addHelperPath(APPLICATION_PATH . '/views/helpers/', 'Custom_Zend_View_Helper');
$view->addScriptPath(APPLICATION_PATH . '/views/scripts/');
$view->addScriptPath(APPLICATION_PATH . '/views/partials/');
//$view->headMeta()->appendHttpEquiv('Content-Language', Zend_Registry::get('language'));
// Add it to the ViewRenderer
$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
$viewRenderer->setView($view);
$view->doctype('XHTML1_STRICT');
// Return it, so that it can be stored by the bootstrap
return $view;
}
}
而我的 htaccess 位于根目录中以忽略主机上的公共目录:
RewriteEngine On
RewriteRule ^\.htaccess$ - [F]
RewriteCond %{REQUEST_URI} =""
RewriteRule ^.*$ /public/index.php [NC,L]
RewriteCond %{REQUEST_URI} !^/public/.*$
RewriteRule ^(.*)$ /public/$1
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^.*$ - [NC,L]
RewriteRule ^public/.*$ /public/index.php [NC,L]
【问题讨论】:
-
这只是一个警告,它不会停止您的脚本 - 除非(如您的情况)您显示错误。您应该禁用错误显示(因为那是生产服务器)并改为记录它们。您还应该查看实际设置:php.net/manual/en/ini.core.php#ini.open-basedir - 您的软件的某些部分想要访问他们不允许访问的文件。 - 相关搜索:stackoverflow.com/…
标签: php zend-framework