file_exists returns 假 XAMPP

file_exists returns false on XAMPP

我在 widows 7 机器上安装了 XAMPP 如果我执行:file_exists("ss.txt") 我得到 true (ss.txt is in my docroot e:\www\)

如果我将 ss.txt 移动到 e:\www\var 并调用 file_exists("/var/ss.txt") 我得到 false 但 file_exists("var/ss.txt") returns true - 为什么?

我无法更改查找位置 ("/var/ss.txt"),因为这是数据库中的一个条目,并且有一个生产服务器 运行 Ubuntu 使用相同的数据。

/var/ss.txt 对应于从驱动器根目录开始的路径,而 var/ss.txt 是从执行脚本的位置开始的路径(在您的情况下为 e:\www\)。

您可以调整从数据库获取的路径,方法是在它前面加上一个点 . 以指示路径从执行脚本的位置开始。

$path = '/var/ss.txt';
$relativePath = '.' . $path; // equivalent to "./var/ss.txt"
file_exists($relativePath);

您还可以 trim 任何 / 从您的路径开始:

$path = '/var/ss.txt';
$relativePath = ltrim($path, '/'); // equivalent to "var/ss.txt"
file_exists($relativePath);

ltrim documentation

您说过您不能更改脚本中的路径,因为它是从数据库中提取的。只需在您的开发机器上设置目录结构,就像在您的服务器上设置一样。 (即不要创建目录 'e:\www\var',创建目录 'e:\var'。)

至于为什么,正如其他人所说,'/var/ss.txt'是绝对路径,而'var/ss.txt'是相对路径。