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

6

我正在开发一个 PHP 项目,它出现了以下错误:

Warning:

在 ..\htdocs\GProject\lib\exception\ExceptionHandler.php 的第20行,出现了“require_once(ROOT_PATH/lib/confs/Conf.php) [function.require-once]: failed to open stream: No such file or directory”的错误信息。

致命错误:在 ..\htdocs\GProject\lib\exception\ExceptionHandler.php 的第20行,执行“require_once()”函数时无法打开“ROOT_PATH/lib/confs/Conf.php”文件(include_path='.;C:\php5\pear')。

但是,在 \ExceptionHandler.php 文件中,第20行是:

require_once ROOT_PATH . '/lib/confs/Conf.php';

我有一个文件Conf.php,它位于lib/confs/Conf.php下面,但是我仍然收到错误提示。

可能是什么问题呢? 提前感谢。


你能展示定义ROOT_PATH的代码吗? - shanethehat
4个回答

7
我将进行以下假设调试:
  1. 文件不存在。
  2. ROOT_PATH设置不正确。
  3. 当前工作目录与预期不符,因此如果ROOT_PATH是相对路径,则会破坏完整路径。
如果以上情况都不是问题,我就不确定了。
有些库必须安装到列在PHP库路径中的目录中。 在这些情况下,您有几个选择:
  • 将库安装到PHP默认搜索的目录中(例如/usr/share/php)。
  • 使用set_include_path更新包含路径,而不覆盖旧路径(结合使用get_include_pathPATH_SEPARATOR)。

2

ROOT_PATH在你的脚本中未定义。这应该是一个具有你根路径值的已定义常量。

检查它是否已经被定义。

if (defined('ROOT_PATH')) { echo 'Defined';} else { echo 'Not defined'; }

未定义。

如果已定义,则错误消息将包含定义常量的值,因为错误本身包含常量。

在您的脚本中定义。

define('ROOT_PATH',$_SERVER['DOCUMENT_ROOT']); //an example

或者您忘记在配置文件中包含定义这些常量的内容。


1

只需对传递给require_once函数的整个路径进行回显,并仔细检查其中是否有任何问题:

echo ROOT_PATH . "/lib/confs/Conf.php";

0
我今天遇到了这个问题,但我已经找到了答案。 PHP Bug #23392 基本上,你需要安装Pear OLE扩展。 pear install OLE

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接