0

重複の可能性:
リファレンス-このエラーはPHPで何を意味しますか?

ローカルWebサーバーでZF構成を使用しましたが、すべて正常に機能しました。今、私はそれを私のホストのインターネットに置き、サイトをロードすると、画面に多くの警告/致命的なエラーが表示されます。誰かがその理由が何であるかについての考えを持っていますか?

あいさつエリック

例:

警告:is_読み取り可能()[function.is-読み取り可能]:open_basedir制限が有効です。ファイル(/usr/local/reserved///sites/ericversteeg.nl/www/application/../library/Custom/Zend/Application/Resource/View.php)が許可されたパス内にありません:(/ /sites/ericversteeg.nl/www/library/Zend/Loader.phpの198行目のusr/local / reserved / index.php:/sites/ericversteeg.nl/:/tmp)

警告:is_読み取り可能()[function.is-読み取り可能]:open_basedir制限が有効です。ファイル(/usr/local/reserved///sites/ericversteeg.nl/www/application/../library/Custom/Zend/Application/Resource/View.php)が許可されたパス内にありません:(/ /sites/ericversteeg.nl/www/library/Zend/Loader.phpの198行目のusr/local / reserved / index.php:/sites/ericversteeg.nl/:/tmp)

そして最後に致命的:

致命的なエラー:キャッチされない例外'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。

私の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]
4

1 に答える 1

1

サーバーがPleskまたは同様のパネルによって制御されている場合、open_basedirオプションがWebフォルダに設定されているのが非常に一般的です(基本的に、これらのパネルのデフォルトの動作は、スクリプトがWebフォルダ外のファイルにアクセスするのを制限することです)。ただし、この制限を無効にすることが理にかなっており、悪用されない場合が多くあります。たとえば、仮想ホストフォルダーの外部にあるフレームワークを、異なるホスト上のスクリプトで使用される単一のコピーとして使用します。

次のテキストをvhost.conf(通常は/var/www/vhosts/yourdomain.com/httpdocsにあります)に追加する必要があります。

<Directory /var/www/vhosts/yourdomain.com/httpdocs>
    php_admin_value open_basedir "/var/www/vhosts/yourdomain.com" # or /var/www/vhosts etc., depends on where do you want to include your files from, put top level dir here
    php_admin_flag safe_mode off
</Directory>

その後、次のようにWebサーバーを再起動するか、再起動せずに構成を再構築します。

websrvmng -u –vhost-name = yourdomain.com

于 2012-10-07T19:09:32.037 に答える