Require_once PHP错误

时间:2011-07-11 11:02:03

标签: php compiler-errors

我已经用PHP编程了好几年了,之前从未遇到过这个错误。

这是我的 widget.php 文件:

require_once('fruit.php');
echo "I am compiling just fine!!!";

我的 fruit.php 文件:

$bVar = true;

当这两个文件看起来像这样^然后一切都编译没有错误,我得到“我正在编译就好!!! ”成功消息。

现在,我将 fruit.php 文件移动一个目录级别,然后更改我的 widget.php 文件以反映目录重组:

require_once('../fruit.php');
echo "I am compiling just fine!!!";

现在突然间,我得到了PHP警告&致命错误:

Warning: require_once(../fruit.php) [function.require-once]: failed to open stream: No such file or directory in /webroot/app/widget.php on line 1

Fatal error: require_once() [function.require]: Failed opening required '../fruit.php' (include_path='.:/usr/local/php5/lib/php') in /webroot/app/widget.php on line 1

在我使用PHP的这些年里,我从未看到require_once()之前就像这样失败了。有什么想法?!?!

4 个答案:

答案 0 :(得分:13)

也许你在错误的工作目录中。无论如何,依靠它(除了你显然想要访问它)是一个坏主意。使用

require __DIR__ . '/../fruit.php';

或与5.3之前的

require dirname(__FILE__) . '/../fruit.php';

提醒一下,以...开头的路径已针对包含路径解析,但仅针对当前工作目录。

答案 1 :(得分:1)

请记住,在第二种情况下,您指定了一个路径,但在第一种情况下,它使用了包含路径。也许而不是明确指定..在第二种情况下,你可以修改你的包含路径。

http://php.net/manual/en/function.set-include-path.php

答案 2 :(得分:0)

我知道这个问题已经过时了,但它仍然很重要。

根据我的经验,"open_basedir" directive最有可能导致此问题。

答案 3 :(得分:-1)

require_once('fruit.php');

无论当前的工作目录是什么,都会在与widget.php相同的目录中搜索fruit.php。

require_once('../fruit.php');

这会在当前目录上方的目录中搜索fruit.php,而不是在一个widget.php所在的目录中搜索。