Possible Duplicate:
Reference – What does this error mean in PHP?
I had a ZF configuration on a local webserver and everything worked just fine.
Now i put it on the internet at my host and when i load the site i get many warnings/ fatal error on the screen. Does anybody have an idea what the reason can be?
Greetings Eric
Example:
Warning: is_readable() [function.is-readable]: open_basedir restriction in effect.
File(/usr/local/reserved///sites/ericversteeg.nl/www/application/../library/Custom/Zend/Application/Resource/View.php) is not within the allowed path(s): (/usr/local/reserved/index.php:/sites/ericversteeg.nl/:/tmp) in /sites/ericversteeg.nl/www/library/Zend/Loader.php on line 198Warning: is_readable() [function.is-readable]: open_basedir restriction in effect. File(/usr/local/reserved///sites/ericversteeg.nl/www/application/../library/Custom/Zend/Application/Resource/View.php) is not within the allowed path(s): (/usr/local/reserved/index.php:/sites/ericversteeg.nl/:/tmp) in /sites/ericversteeg.nl/www/library/Zend/Loader.php on line 198
And finally the fatal:
Fatal error: Uncaught exception ‘Zend_Controller_Response_Exception’ with message ‘Cannot send headers; headers already sent in /sites/ericversteeg.nl/www/library/Zend/Loader.php, line 198’ in /sites/ericversteeg.nl/www/library/Zend/Controller/Response/Abstract.php:323 Stack trace: #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} thrown in /sites/ericversteeg.nl/www/library/Zend/Controller/Response/Abstract.php on line 323
my 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();
my bootstrap
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;
}
}
and my htaccess is located in the root to ignore public directory on the host:
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]
If your server is controlled by Plesk or similar panel, then it is very usual that open_basedir option is set to your web folder (basically, default behaviour for those panels is to restrict your scripts from accessing file outside of your web folder). But there are many cases when disabling this restriction makes sense and is not abusive, e.g. having a framework outside of any virtual host folder as a single copy to be used by scripts on different hosts.
You need to add the following text into your vhost.conf (usually residing at /var/www/vhosts/yourdomain.com/httpdocs):
After that, restart your webserver or rebuild its configuration without restart as:
websrvmng -u –vhost-name=yourdomain.com