Подтвердить что ты не робот

Проверьте, существует ли каталог в PHP

Я знаю, я знаю, это звучит спокойно. Но я не могу найти правильный ответ в Интернете.

Одним из решений, которое я нашел, было использование 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, даже если вы не найдете такой каталог на своем веб-сервере.

Любые идеи?

4b9b3361

Ответ 1

Должна работать правильно. Из документации is_dir():

Возвращает TRUE, если существует имя файла и является каталогом, FALSE в противном случае.

Ну, в любом случае, если он не пробовал это:

if(file_exists($dir) && is_dir($dir))

BTW. результаты этих функций кэшируются в кете stat. Используйте clearstatcache() для очистки этого кеша.

Ответ 2

Вероятно, вы захотите использовать opendir() после того, как is_dir() соглашается с тем, что путь (может) быть каталогом.

Если ресурс, возвращаемый opendir(), действителен, вы знаете, что у вас есть каталог и уже имеете дескриптор для его чтения.

Просто не забудьте вызвать closedir(), в любом случае, если возвращается верный дескриптор.

Edit:

В этом ответе предполагается, что вы откроете каталог в любом случае. Если вам просто нужно убедиться, что путь нормальный/действительный, file_exists() намного дешевле.

Ответ 3

Вы можете попробовать следующее:

if(is_dir($dir) && is_writeable($dir))
{
    // ...
}