Como verificar a existência de uma pasta em PHP: is_dir, file_exists ou ambos?
Olá a todos! Sou novo em PHP e estou escrevendo um script para upload de arquivos no servidor. Preciso verificar se o diretório onde vou salvar os arquivos existe. Se não existir — criá-lo.
Encontrei duas funções: is_dir() e file_exists(). E agora não entendo qual delas usar. Aqui está meu código:
$path = '/uploads/images/';
// Opção 1
if (is_dir($path)) {
echo "A pasta existe";
} else {
mkdir($path, 0777, true);
}
// Opção 2
if (file_exists($path)) {
echo "A pasta existe";
} else {
mkdir($path, 0777, true);
}
Ambas as opções parecem funcionar, mas notei um comportamento estranho. Se você especificar o caminho para um arquivo, e não para uma pasta, file_exists() retorna true, enquanto is_dir() retorna false. Isso é confuso.
Também li que file_exists() armazena resultados em cache, e isso pode levar a erros. Já is_dir() — não. Mas não tenho certeza.