Проверьте, существует ли каталог в 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, даже если вы не найдете такой каталог на своем веб-сервере.
Любые идеи?
Ответы
Ответ 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))
{
// ...
}
Ответ 4
bool file_exists ( string $filename )
Проверяет, существует ли файл или каталог.
http://php.net/manual/en/function.file-exists.php