Существует файл PHP
Я использую эту функцию, чтобы проверить, существует ли файл:
<?php
header('Content-Type: text/html; charset=utf-8');
//header('Accept-Ranges: bytes');
$nome_real = $_FILES["Arquivo"]["name"];
$pastadestino = "/pasta/$nome_real";
//verifica antes de passar - para apagar o existente
if (file_exists($pastadestino))
{
echo "OK";
}
else
{
echo "NOK";
}
?>
Но он возвращает ОК, даже если я оставлю путь пустой. Или даже если имя файла отличается, кто-нибудь может мне объяснить?
1 answers
Поймать мошенника 1:
Функции file_exists()
, несмотря на название, он проверяет, если путь существует, независимо от него быть файл или каталог.
, Когда вы оставляете параметр пустой тест-это то же самое, как это:
if (file_exists( '/pasta/' ))
, которая должна возвращать true, если папка действительно существует.
Решение:
Решение было бы заменить функцию is_file()
, это указывает на файлы:
if (is_file($pastadestino))
{
echo "OK";
}
else
{
echo "NOK";
}
, Если вы хотите проверить папки/каталоги только, есть функция аналогового is_dir()
, что проверить, если путь существует и является каталогом.
if (is_dir($pastadestino))
{
echo "OK";
}
else
{
echo "NOK";
}
Поймать мошенника 2:
Осторожны, если вам необходимо сделать проверку файлов сразу же после изменения чего-то в filesystem, так как все функции выше cache в PHP.
Решение:
, Чтобы убедиться, иметь дело с пути курсе, существует clearstatcache()
:
clearstatcache(); // Limpamos o cache de arquivos do PHP
if (is_file($pastadestino)) // is_dir() para pastas, is_file para arquivos.
{
echo "OK";
}
else
{
echo "NOK";
}
Нажмите на название функции выше, чтобы узнать больше деталей, они находятся связаны документации PHP.