-1

我已将 Zend Framework 文件转储到

“home/hotbuzz/public_html/include/zend/”

我的主机:linux

我想将它加载到我的脚本中。每当我加载时,我都会收到此错误。

一些信息:我询问了我的 Zend,托管人说它位于“usr/local/zend”

但我想用这个 home/hotbuzz/public_html/include/zend/

我在我的 PHP 中添加了这些内容:

set_include_path(dirname(__FILE__).';'.get_include_path());
require_once 'Zend/Loader.php';

我收到这个错误

Fatal error: require_once() [function.require]: Failed opening required 'Zend/Exception.php' (include_path='/home/hotbuzz/public_html/include;.:/usr/lib/php:/usr/local/lib/php') in /home/hotbuzz/public_html/include/Zend/Loader.php on line 87

我想在我的 PHP 代码中设置包含路径并对其进行配置(.htaccess)。

4

4 回答 4

11

正如我在你之前的问题中所说的那样。不使用 ';' 但使用 PATH_SEPARATOR。这是一个 PHP 常量,代表系统的正确分隔符(windows 上的分号和 linux 上的冒号)

set_include_path(dirname(__FILE__).PATH_SEPARATOR.get_include_path());
于 2009-01-17T08:06:30.907 回答
3

你做得对。您应该调用set_include_path主脚本 (index.php) 的第一行,然后包含/需要 zend 框架文件。请记住将包含 Zend 框架的文件夹重命名为“Zend”(大写 Z)以遵循 ZF 命名转换,然后将 Zend 文件夹放在包含目录中。

<?php
$newIncludePath = array();
$newIncludePath[] = '.';
$newIncludePath[] = 'include';
$newIncludePath[] = get_include_path();
$newIncludePath = implode(PATH_SEPARATOR, $newIncludePath);
set_include_path($newIncludePath);
// now include path is setup and we can use zend
require_once 'Zend/Loader.php';
Zend_Loader::registerAutoLoad('Zend_Loader', true);
// the rest of the code
?>

如果你把 Zend 目录放在你的包含路径中,而不是包含目录(包含 Zend 目录),你可能不会使用这个:

require_once 'Zend/Loader';

相反,您应该使用:

require_once 'Loader';

这不是一个好主意。通过使用 Zend/* 模型,您将记住 Zend 框架中包含哪些文件以及您拥有哪些文件。所以只需将包含目录添加到您的包含路径中。

于 2009-01-17T11:15:33.570 回答
0

如果您使用 auto_prepend 而不是 include...,您可能会取得更大的成功。

php_value include_path /home/hotbuzz/public_html/include/zend/
php_value auto_prepend_file Zend/Loader.php

你在启动和执行时的 apache 日志中得到了什么?

于 2009-01-17T08:59:55.263 回答
-1

您可以在 bootstrap.php 的第一行附加以下代码:

set_include_path('.' . PATH_SEPARATOR . '../library' . PATH_SEPARATOR . '../application/models/' . PATH_SEPARATOR . get_include_path());
于 2010-10-01T05:26:05.113 回答