1

我正在尝试使用以下方法包含文件:

require_once '../config/configVARS.php';

但我得到了错误:

Warning: require_once(../config/configVARS.php): failed to open stream: No such file or directory in ..../classes/FileHandler.php on line 2

Fatal error: require_once(): Failed opening required '../config/configVARS.php' (include_path='.:/opt/lampp/lib/php') in ..../classes/FileHandler.php on line 2

如果我尝试在同一个文件夹中包含一个文件,我没有任何错误(例如,当我将 configVARS 文件复制到同一个文件夹时,我可以包含它)。

我检查了权限,但不是这样(没有所有权)。

有任何想法吗?什么会导致它?

4

2 回答 2

2

检查文件是否确实存在,如果您不确定是否使用了正确的文件名,请使用绝对路径而不是相对路径。

魔术常量__DIR__Docs包含您写入的文件的绝对位置,所以

require_once __DIR__ . '/concrete/path/to/file.php';

通常更明显,因为您实际上似乎知道文件的确切位置 - 似乎不需要在其中查看的预配置包含目录。

于 2012-10-08T17:59:56.997 回答
0

相对包含始终是一个棘手的主题,相对路径可能与您认为的不同,具体取决于您包含它的文件。最佳实践是使用绝对引用,通常通过使用定义的常量作为前缀,例如:

define('BASE_PATH', $_SERVER['DOCUMENT_ROOT']);

require_once(BASE_PATH . 'path_to_include');

在这里更好地解释:

http://yagudaev.com/posts/resolving-php-relative-path-problem/

于 2012-10-08T12:40:01.840 回答