Zend框架错误:无法打开所需的“Zend/Application.php”

hfyxw5xn  于 2022-12-10  发布在  PHP
关注(0)|答案(3)|浏览(209)

当我尝试运行由Zend Framework创建的项目时,我得到了以下错误。它正在查找Zend/Application. php,该文件位于我的include_path目录中。我对该目录具有读取权限。
PHP致命错误:函数.require_once():在第24行打开/var/www/vhosts/www.example.com中所需的“Zend/应用程序. phpmoderncloud.net/om/library:.:/var/www/vhosts/moderncloud.net/ommoderncloud.net/om/public/index.php失败

<?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”的问题。我把它设置为none,它就开始工作了。或者,我想我可以把Zend库目录附加到我的web服务器配置中的open_basedir选项中,而不是把它设置为none。

njthzxwz

njthzxwz1#

您是否可以尝试替换:

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()
);

希望对你有用

8ulbf1ek

8ulbf1ek2#

如果可能的话,删除现有的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(),
)));
fsi0uk1n

fsi0uk1n3#

产生此问题的原因:
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();

相关问题