Zend Framework错误:无法打开所需的'Zend / Application.php'

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Zend Framework错误:无法打开所需的'Zend / Application.php'相关的知识,希望对你有一定的参考价值。

当我尝试运行Zend Framework创建的项目时,出现以下错误。它正在寻找Zend / Application.php,它可以在我的include_path目录中找到。我对该目录有读权限。

PHP致命错误:require_once()[function.require]:无法打开所需的'Zend / Application.php'(include_path ='/ var / www / vhosts / moderncloud.net / om / library:。:/ var / www / vhosts第24行的/var/www/vhosts/moderncloud.net/om/public/index.php中的/moderncloud.net/om / library:')

<?php


// Define path to application directory
//defined('APPLICATION_PATH')
//    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));

defined('APPLICATION_PATH')
    || define('APPLICATION_PATH', 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(
    ('/var/www/vhosts/moderncloud.net/om/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();

解:

我今天自己找到了。在我的httpd配置中选项“php_admin_value open_basedir”存在问题。我把它设置为无,它开始工作。或者,我想我可以将Zend库目录附加到我的Web服务器配置中的open_basedir选项,而不是将其设置为none。

答案

你能尝试更换:

set_include_path(implode(PATH_SEPARATOR, array(
    ('/var/www/vhosts/moderncloud.net/om/library'),
    get_include_path(),
)));

$siteRootDir = dirname($_SERVER['DOCUMENT_ROOT']);

set_include_path(
    $siteRootDir . '/library' . PATH_SEPARATOR 
    . $siteRootDir . '/application' . PATH_SEPARATOR 
    . get_include_path()
);

希望这对你有用

另一答案

如果可能,删除现有的zend框架安装并使用PEAR安装ZF。稍后更新会更容易:

 pear channel-discover zend.googlecode.com/svn
 pear install zend/zend

它还将使用PEAR的include_path,因此它应该可以解决您的问题。

如果您不能使用pear,请尝试使用包含路径的相对路径:

 // Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
    realpath(APPLICATION_PATH . '/../library'),
    get_include_path(),
)));
另一答案

由于以下原因产生此问题:

  1. 在index.php文件中的Public文件夹。

要么

  1. 在库文件夹中: - 只需检入库文件夹,库文件夹中是否存在Zend文件夹。如果不存在zend文件夹,则从zend框架下载并保存在库文件夹中。

=>在index.php中复制以下代码并替换它。

<?php

 // 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';
  require_once 'library/Zend/Application.php';




  // Create application, bootstrap, and run
 $application = new Zend_Application(
 APPLICATION_ENV,
 APPLICATION_PATH . '/configs/application.ini'
      );
                                                                                                                                                                                                                     $application->bootstrap()
        ->run();

以上是关于Zend Framework错误:无法打开所需的'Zend / Application.php'的主要内容,如果未能解决你的问题,请参考以下文章

Zend框架快速入门索引文件无法正常工作

Xampp / Composer / Zend Framework 2 安装问题

Zend Framework 调用表单作为表单中的子表单

PHP Pear Mail 返回致命错误:无法打开所需的“Mail.php”

安装 Sylius 时出错:“PHP 致命错误:require():无法打开所需的 autoload.php”

致命错误:require_once() [function.require]:无法打开所需的 global.php