file_exists()或is_readable()

时间:2011-07-07 00:56:32

标签: php include require file-exists

如果要包含PHP文件,应该使用哪一个?

if(file_exists($file) require "$file";

if(is_readable($file) require "$file";

4 个答案:

答案 0 :(得分:26)

  

file_exists()is_readable()
  如果要包含PHP文件,应该使用哪一个?

这取决于您是否想知道文件是否存在目录,或者两者是否正常,以及是否需要检查是否可读。

有时你只关心文件和/或目录存在,而不需要阅读,有时候你还需要阅读。

选项

file_exists()

检查文件目录是否存在。

如果您明确只想知道文件是否存在,则会返回误报,如果它是目录,则返回true。

is_readable()

判断文件目录是否存在且可读。

如果您明确只想知道文件是否可读,则可能会返回误报,如果它是目录,则可能返回true。

您未提及的其他选项,但可能需要:

is_file()

判断它是否存在并且是常规的文件(不是目录)。

is_dir()

判断它是否存在并且是目录(不是文件)。

解决方案&答案

如果您想检查存在并且:

  1. 只是一个文件:使用is_file()
  2. 只是一个目录:使用is_dir()
  3. 是文件还是目录:使用file_exists()
  4. 如果您想检查存在且可读:

    1. 并且只是文件:使用is_file()is_readable()
    2. 并且只是目录:使用is_dir()is_readable()
    3. 是文件或目录:使用is_readable()
    4. 您不需要同时使用file_exists()is_readable(),因为is_readable()还会检查file_exists()
      is_readable()is_file()is_dir()配对只是为了检查文件上是否只能具体,或者具体在目录上只要。

      依赖于

      与大多数PHP和“什么是最佳方法/功能/等”一样 - 这取决于场景。

      仅依靠require来管理系统是否挂起并不是真的有用。想象一下,所需的文件不可用,因此PHP停止,因为要求失败,但文件只是一个文章图像或用户头像 - 你真的不想提供网站导航,徽标,链接,各种页面文本和内容只是因为丢失的文章图片?

      VITAL:
      如果该文件是允许提供整个页面内容的数据库连接类,则该文件不存在可能需要系统停止。
      当然,你应该有某种退出策略,比如提供404页面或错误信息 - “抱歉有错,我们会调查它”等。

      非活力:
      有时文件不存在,或者至少不会对应用程序的其余部分造成损害 例如,如果图像文件不存在,您可以提供消息或默认图像,例如,如果未找到他们的用户头像将只有默认头像。

答案 1 :(得分:9)

答案是: is_readable()

  

bool is_readable(string $ filename)

     

判断文件是否存在   可读的。

http://us3.php.net/manual/en/function.is-readable.php

答案 2 :(得分:6)

如果您要转到require文件,则错误检查没有意义。使用require而不是include的目的是在文件不存在时继续执行脚本。

如果您不关心文件是否存在,只需使用include

答案 3 :(得分:4)

if(is_file($file) && is_readable($file))

因为is_readable对于目录也是如此