2010-08-28 3 views
3

Моя текущая структура каталогов выглядит следующим образом:PHP - почему is_dir возвращает TRUE, когда каталог не существует?

C:\xampp\htdocs\PHP_Upload_Image_MKDIR 

Другими словами, следующие каталоги не существует.

Проблема в том, что при запуске следующего скрипта функция 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/>'; 

Спасибо за решения.

С наилучшими пожеланиями

+1

Вы уверены, что эти каталоги не существуют (например: они могут быть скрыты) – NullUserException

+1

ya, убедитесь, что в каталоге нет ... код отлично работает со мной – Aziz

+1

Посмотрите, что является результатом 'realpath ($ userDir) ' – Artefacto

ответ

1

Кроме того, кажется, что реж вы проверяете это PHP_Uploaded_Image_MKDIR/uploaded/s002, что это абсолютный путь, начиная от корневой файловой системы.

Попробуйте добавить C:\xampp\htdocs\ к этому и посмотреть, будет ли он работать тогда. Кроме того, проверьте, существует ли папка в корневом томе.

1

Если вы запустите этот сценарий более чем один раз, то is_dir($userDir) вернется true из этой линии (последняя) в вашем скрипте:

mkdir($userDir, 0700); 

Вы можете использовать rmdir() или некоторый другой метод для его удаления.

Чтобы проверить is_dir(), попробуйте имя каталога, которое никогда не использовалось/не создавалось. Что-то вроде следующего должен возвращать ложь, когда это произойдет, вы знаете, что is_dir() работы:

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