file_exists() 适用于字符串但不适用于字符串变量

file_exists() works on string but not string variable

我在 PHP 中遇到函数 file_exists() 的问题。下面代码的结果总是 "Exists on string",但在我看来它应该打印两条消息。

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

is_file推荐用于校验文件,不便之处可自行修改

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

is_file and file_exists 是两个本机 PHP 函数,可用于验证特定文件是否存在。虽然他们的名字相当具有描述性,但您应该知道:

  1. is_file returns 仅当最后一个函数的路径实际上是一个现有文件时才为真。
  2. file_exists returns true 过去是否是文件路径作为有效目录(使用is_dir if你想专门检查路径是否是目录而不是文件)。

This difference is very important. If your goal is not only files and directories is_file is your function. If you want to check a directory or a file indifferently choose 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