我正在尝试使用以下内容包含文件:
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文件复制到同一文件夹时,我可以包含它)。
我检查了权限,而不是它(不是所有权)。
有什么想法吗?是什么导致它?
答案 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/