gpt4 book ai didi

PHP:可以包含 file_exists() 说不存在的文件

转载 作者:行者123 更新时间:2023-12-04 06:57:49 26 4
gpt4 key购买 nike

在我的脚本中,我设置了包含路径(因此应用程序的另一部分也可以包含文件),检查文件是否存在并包含它。

但是,在我设置包含路径后,file_exists()报告该文件不存在,但我仍然可以包含相同的文件。

<?php
$include_path = realpath('path/to/some/directory');
if(!is_string($include_path) || !is_dir($include_path))
{
return false;
}
set_include_path(
implode(PATH_SEPARATOR, array(
$include_path,
get_include_path()
))
);
// Bootstrap file is located at: "path/to/some/directory/bootstrap.php".
$bootstrap = 'bootstrap.php';

// Returns "bool(true)".
var_dump(file_exists($include_path . '/' . $bootstrap));
// Returns "bool(false)".
var_dump(file_exists($bootstrap));

// This led me to believe that the include path was not being set properly.
// But it is. The next thing is what puzzles me.

require_once $bootstrap;
// Not only are there no errors, but the file is included successfully!

我可以在不提供绝对文件路径的情况下编辑包含路径和包含文件,但我无法检查它们是否存在。这真的很烦人,因为每次调用不存在的文件时,我的应用程序都会导致 fatal error ,或者充其量是警告(使用 include_once() )。

不幸的是,关闭错误和警告不是一种选择。

谁能解释导致这种行为的原因?

最佳答案

file_exists仅说明文件是否存在(并且允许脚本知道它存在),解析相对于 cwd 的路径。它不关心包含路径。

关于PHP:可以包含 file_exists() 说不存在的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2331067/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com