PHP - 当dir不存在时,为什么is_dir返回TRUE?

时间:2010-08-28 16:01:15

标签: php

我目前的目录结构如下:

C:\xampp\htdocs\PHP_Upload_Image_MKDIR

换句话说,根本不存在以下目录。

C:\xampp\htdocs\PHP_Upload_Image_MKDIR\uploaded
C:\xampp\htdocs\PHP_Upload_Image_MKDIR\uploaded\s002

问题是当我运行以下脚本时,函数is_dir总是返回TRUE。

根据手册http://us2.php.net/manual/en/function.is-dir.php is_dir:如果文件名存在且为目录,则返回TRUE,否则返回FALSE。

我在这里想念一下吗?

谢谢

$userID = 's002';
$uploadFolder = '/PHP_Upload_Image_MKDIR/uploaded/';
$userDir = $uploadFolder . $userID;
echo '<br/>$userDir: ' . $userDir . '<br/>';

if ( is_dir ($userDir))
{
  echo "dir exists"; // always hit here!!!
}
else 
{
  echo "dir doesn't exist";
}

mkdir($userDir, 0700);
C:\xampp\htdocs\PHP_Upload_Image_MKDIR>dir /ah
 Volume in drive C is System
 Volume Serial Number is 30B8-2BB2

 Directory of C:\xampp\htdocs\PHP_Upload_Image_MKDIR

File Not Found

C:\xampp\htdocs\PHP_Upload_Image_MKDIR>


//////////////////////////////////////////////////////////

根据Artefacto的评论:

Here is the output of C:\PHP_Upload_Image_MKDIR\uploaded\s005
 echo '<br/>' . realpath($userDir) . '<br/>';

感谢您提供解决方案。

祝福

3 个答案:

答案 0 :(得分:1)

尝试使用file_exists()。

http://php.net/manual/en/function.file-exists.php

答案 1 :(得分:1)

如果您多次运行该脚本,那么is_dir($userDir)将返回true因为您的脚本中的这一行(最后一行):

mkdir($userDir, 0700);

您可以使用rmdir()或其他方法将其删除。

要测试is_dir(),请尝试从未使用/创建的目录名称。像下面这样的东西应该返回false,当它发生时,你知道is_dir()有效:

if ( is_dir ("/PHP_Upload_Image_MKDIR/uploaded/lkjlkjlkjkl"))

答案 2 :(得分:1)

此外,您正在检查的目录似乎是PHP_Uploaded_Image_MKDIR/uploaded/s002,这是从根文件系统开始的绝对路径。

尝试将C:\xampp\htdocs\添加到此前,然后查看它是否有效。另外,检查文件夹是否存在于卷的根目录下。