Я знаю, я знаю , это звучит очень легко. Но я не могу найти правильный ответ в Интернете.
Одним из решений, которое я нашел, было использование 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, даже если вы не найдете такой каталог на своем веб-сервере.
Есть идеи?
Должен работать правильно. Из документа is_dir()
:
Возвращает TRUE, если имя файла существует и является каталогом , FALSE в противном случае.
Ну, в любом случае, если это не попытка:
if(file_exists($dir) && is_dir($dir))
КСТАТИ. результаты этих функций кэшируются в кете stat. Используйте clearstatcache () для очистки этого кеша.
Вероятно, вы захотите использовать opendir () после того, как is_dir () соглашается с тем, что путь (может) быть каталогом.
Если ресурс, возвращаемый opendir (), действителен, вы знаете, что у вас есть каталог и уже имеете дескриптор для его чтения.
Просто не забудьте вызвать closedir (), в любом случае, если возвращается действительный дескриптор.
Редактировать:
Этот ответ предполагает, что вы откроете каталог в любом случае. Если вам просто нужно убедиться, что путь нормальный / действительный, file_exists () намного дешевле.
Вы можете попробовать следующее:
if(is_dir($dir) && is_writeable($dir)) { // ... }
bool file_exists ( string $filename )
Проверяет, существует ли файл или каталог.