即使存在位置,也无法打开流

时间:2012-10-08 12:33:24

标签: php

我正在尝试使用以下内容包含文件:

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文件复制到同一文件夹时,我可以包含它)。

我检查了权限,而不是它(不是所有权)。

有什么想法吗?是什么导致它?

2 个答案:

答案 0 :(得分:2)

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

magic constant __DIR__Docs包含您编入文件的绝对位置,所以

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

通常更加清晰,因为您实际上似乎知道文件存在的确切位置 - 预先配置的包含目录在哪里查看似乎没有必要。

答案 1 :(得分:0)

相对包含总是一个棘手的主题,相对路径可能与您认为依赖于您所包含的文件的内容不同。最佳做法是使用绝对引用,通常通过前缀定义的常量,例如:

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

require_once(BASE_PATH . 'path_to_include');

这里有更好的解释:

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