【问题标题】:file_exists() works on string but not string variablefile_exists() 适用于字符串但不适用于字符串变量
【发布时间】:2017-01-06 06:47:51
【问题描述】:

我对 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_exists() 也将返回 true ......以及 @ManinderpreetSingh 所说的......
  • @MagnusEriksson 您需要同时使用这两种方法以避免 is_file() 发出警告。编辑:哦,显然不是! 3v4l.org/L9ppf对不起!
  • @jedifans - 不,is_file() 做同样的事情,但更好。 :)

标签: php file-exists


【解决方案1】:

is_file推荐用来校验文件,不便可以为你的路由,改

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

is_filefile_exists 是两个原生 PHP 函数,可用于验证特定文件是否存在。尽管它们的名称具有相当的描述性,但您应该知道:

  1. is_file 仅当最后一个函数的路径实际上是现有文件时才返回 true。
  2. file_exists 返回 true 是否将过去的文件路径作为有效目录(如果您想专门检查路径是否是目录而不是文件,请使用 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

【讨论】:

  • 这是对函数的一个很好的解释。但是,它并没有真正回答 OP 的问题,所以我不确定您为什么给出它作为答案?
  • 将检查函数is_file。也许在我的情况下它会更好:)
  • is_file 在我的问题中完成了工作。它应该同样工作,但没有理由他们没有。现在一切正常。
猜你喜欢
  • 1970-01-01
  • 2013-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-13
  • 1970-01-01
  • 2017-03-25
  • 2023-01-11
相关资源
最近更新 更多