我知道,我知道,这听起来很简单 soo 。但我似乎无法在互联网上找到正确的答案。
我找到的解决方案之一是使用is_dir
。
if(is_dir($dir))
echo 'directory exists';
else
echo 'drectory not exist';
但这是 错误 - 所有这个功能都是检查$dir
是否是目录,不检查目录是否存在, 或不。换句话说,如果我把:
$rootDir = "C:\\Documents and Settings\\test\\My Documents\\Image Directory\\Me Dog\\";
然后该函数将返回true,即使您在Web服务器上找不到此类目录。
有什么想法吗?
答案 0 :(得分:53)
应该正常工作。来自is_dir()
文档:
如果文件名存在,则返回TRUE 并且是一个目录,FALSE 否则。
好吧,无论如何,如果它没有尝试这个:
if(file_exists($dir) && is_dir($dir))
顺便说一句。这些函数的结果缓存在stat缓存中。使用clearstatcache()清除该缓存。
答案 1 :(得分:2)
在is_dir()同意路径(可能)是目录之后,您可能想要使用opendir()。
如果opendir()返回的资源有效,你知道你有一个目录,并且已经有一个句柄来读取它。
如果返回有效的句柄,请确保以任何一种方式调用closedir()。
编辑:
这个答案假定您将以任一方式打开目录。如果你只需要确保路径是健全/有效的,那么file_exists()要便宜得多。
答案 2 :(得分:0)
你可以试试这个:
if(is_dir($dir) && is_writeable($dir))
{
// ...
}
答案 3 :(得分:0)
bool file_exists ( string $filename )
检查文件或目录是否存在。