2016-08-30 2 views
0

У меня проблема с функцией file_exists() в PHP. Результат кода ниже всегда «существует в строке», но, на мой взгляд, он должен печатать два сообщения.file_exists() работает с строкой, но не с строковой переменной

$file = 'test_file.txt'; 
    if (file_exists($file)){ 
     echo 'Exists on variable'; 
    } 
    if (file_exists('test_file.txt'){ 
     echo 'Exists on string'; 
    } 
+1

попробовать с абсолютным путем вместо относительного –

+1

внушения, если вы хотите, чтобы проверить, если он на самом деле является файлом и существует, вместо этого используйте 'is_file()'. 'file_exists()' также вернет true, если путь является папкой ... и что @ManinderpreetSingh сказал .. –

+0

@MagnusEriksson Вам нужно использовать оба, чтобы избежать предупреждения is_file(). Редактировать: о, по-видимому, нет! https://3v4l.org/L9ppf извините! – jedifans

ответ

0

is_file рекомендуется использовать для проверки файлов и неудобств может быть для ваших маршрутов, изменение

$file = $_SERVER['DOCUMENT_ROOT'].'/mysite/test_file.txt'; 

is_file и file_exists две родных PHP функции, которые могут быть использованы для проверки конкретного файла существует или нет. Хотя их имена довольно описательный, вы должны знать, что:

  1. is_file возвращает истину, если путь к последней функции фактически существующий файл.
  2. file_exists возвращает истинное ли прошлое путь к файлу в качестве действительного каталога (используйте is_dir, если вы хотите конкретно проверить, если путь является каталогом, но не файл).

Это различие очень важно. Если ваша цель - это не только файлы и каталоги, то is_file - это ваша функция. Если вы хотите проверить папку или файл индифферентно выбрать file_exists

пример:

$file ='mysite/public_html/folder/file.php'; 

$directory ='/mysite/public_html/folder/'; 


$exists = is_file($file);//return true 

$exists = is_file($directory); //return false 

$exists = file_exists($file);//return true 

$exists = file_exists($directory); //return true 
+0

Это хорошее объяснение о функциях. Тем не менее, на самом деле он не отвечает на вопрос OP, поэтому я не уверен, почему вы дали ему ответ? –

+0

Будет проверять функцию is_file. Может быть, он будет работать лучше в моем случае :) – PJak

+0

is_file в моей проблеме сделал работу. Он должен работать так же, но без причины они этого не сделали. Теперь все в порядке. – PJak