Avatar ·

如何检查 PHP 中文件夹是否存在:is_dir、file_exists 还是两者都用?

大家好!我是 PHP 新手,正在编写一个将文件上传到服务器的脚本。我需要检查用于保存文件的目录是否存在。如果不存在,则创建它。

我遇到了两个函数:is_dir() 和 file_exists()。现在我不明白该用哪一个。这是我的代码:

$path = '/uploads/images/';

// 选项 1
if (is_dir($path)) {
    echo "文件夹存在";
} else {
    mkdir($path, 0777, true);
}

// 选项 2
if (file_exists($path)) {
    echo "文件夹存在";
} else {
    mkdir($path, 0777, true);
}

两个选项似乎都能工作,但我注意到一个奇怪的行为。如果指定的是文件路径而不是文件夹路径,file_exists() 返回 true,而 is_dir() 返回 false。这让人困惑。

我还读到 file_exists() 会缓存结果,这可能导致错误。而 is_dir() 不会。但我没有