PHP:
Проверка существования директории
Как это сделать:
В PHP is_dir()
проверяет, существует ли директория:
$directory = "/path/to/dir";
if (is_dir($directory)) {
echo "Директория существует.";
} else {
echo "Директории не существует.";
}
Пример вывода:
Директория существует.
Или, если директории действительно нет:
Директории не существует.
Чтобы подавить ошибки и использовать более детальную проверку, сочетайте is_dir()
с функцией file_exists()
:
$directory = "/path/to/dir";
if (file_exists($directory) && is_dir($directory)) {
echo "Директория существует и является директорией.";
} else {
echo "Директории не существует или это файл.";
}
Подробнее
is_dir()
существует в PHP с версии 4.0.0, позволяя проверять существование директории перед операциями, которые могут завершиться неудачей или вызвать ошибки. Не путайте с file_exists()
, которая проверяет существование как файлов, так и директорий, is_dir()
специфична для директорий.
До появления этих встроенных функций программисты могли использовать opendir()
и проверять на ложное возвращаемое значение, чтобы сделать вывод об отсутствии. Это было менее эффективно и более подвержено ошибкам.
Под капотом is_dir()
выполняет системный вызов к основной файловой системе, что может быть более затратным с точки зрения операций ввода-вывода, особенно для удаленных или виртуальных файловых систем. Кэширование результатов или структурирование кода для минимизации проверок на существование может оптимизировать производительность.
Одной из альтернатив, особенно актуальной в системах, подобных Unix, является использование exec()
с системной командой вроде ls
или test -d
, но это вводит дополнительные затраты на вызов оболочки и менее переносимо.