file_exists()或is_可读()

问题描述 投票:28回答:4

要包含PHP文件时应使用哪个?

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

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

php include require file-exists
4个回答
31
投票

[file_exists()is_readable()当您要包含一个PHP文件时,应该使用哪一个?

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

有时您只关心文件和/或目录是否存在,并且不需要读取,有时还需要读取。

选项

file_exists()

检查文件目录是否存在。

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

is_readable()

告诉<>或目录是否存在并且可读。 如果您明确只想知道

file

是否可读,则可能返回假阳性,如果在目录中则可能返回true。
您没有提到的其他选项,但可能需要:

is_file()

告诉它是否存在并且是常规的

file

(不是目录)。 is_dir()

告诉它是否存在并且是

目录

(不是文件)。
解决方案和答案

如果您要检查是否存在,并且:

    仅是文件:使用is_file()
  1. 仅是目录:使用is_dir()
  2. 是文件或目录:使用file_exists()
  3. 如果要检查是否存在并且可读:

    并且仅是文件:使用is_file()is_readable()
  1. 并且仅是目录:使用is_dir()is_readable()
  2. 并且是文件或目录:使用is_readable()
  3. 您不需要一起使用file_exists()is_readable(),因为is_readable()还会检查file_exists()是否。将is_readable()is_file()is_dir()配对仅用于检查是否仅在文件上读取

    specifically

或仅在目录上读取specifically
根据要求

与大多数PHP一样,“什么是最好的方法/功能/等”-这取决于情况。

仅依靠require来管理系统是否挂起并不是真的有用。想象所需的文件不可用,因此PHP不能按需停止,但是该文件只是文章图像或用户头像-您真的不希望仅仅因为以下原因而提供站点导航,徽标,链接,各种页面文本和内容?丢失的商品图片?

VITAL:如果文件是允许提供整个页面内容的数据库连接类,则文件不存在可能需要系统停止。当然,那您应该有某种退出策略,例如为404页提供服务,或者出现错误消息-“对不起,我们将进行调查”等。

非重要:有时文件不存在或至少对应用程序的其余部分无害是有效的。例如,如果图像文件不存在,则可以提供消息或默认图像,例如,如果找不到用户头像,则该用户头像将仅具有默认头像。


9
投票
答案是:

is_可读()


8
投票
[如果您要转到require文件,则错误检查毫无意义。使用require而不是include的目的是在文件不存在的情况下破坏脚本的执行。

6
投票
if (is_file($file) && is_readable($file))
© www.soinside.com 2019 - 2024. All rights reserved.