file_exists() 或 is_read()

发布于 2024-11-18 23:17:21 字数 180 浏览 4 评论 0原文

当您想要包含 PHP 文件时应该使用哪一个?

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

或者

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

Which one should you use when you want to include a PHP file?

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

or

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

?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

空城仅有旧梦在 2024-11-25 23:17:21

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

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

有时你只关心文件和/或目录是否存在,而不需要读取,有时你也需要读取。

选项

file_exists()

检查文件是否存在 或目录 存在。

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

is_read()

判断一个文件目录存在并且可读。

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


您没有提到但可能需要的其他选项:

is_file()

告诉它是否存在并且是一个常规文件(不是目录)。

is_dir()

告诉它是否存在并且是一个 目录(不是文件)。

解决方案&回答

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

  1. 仅是一个文件:使用 is_file()
  2. 仅是一个目录:使用 is_dir()
  3. 是文件还是目录:使用 file_exists()

如果您想检查是否存在且可读:

  1. 并且仅是文件:使用 is_file()is_read()
  2. 并且仅是目录:使用is_dir()is_read()
  3. 并且是文件或目录:使用 is_read()

您不需要使用 file_exists( )is_read() 一起使用,因为 is_read() 还会检查 file_exists() 是否存在。
is_read()is_file()is_dir() 配对只是为了检查是否可读具体仅一个文件或具体仅位于目录中。


依赖于 require

与大多数 PHP 一样,“什么是最好的方法/函数/等等”——这取决于场景。

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

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

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

file_exists() or is_readable()
Which one should you use when you want to include a PHP file?

This depends on if you want to know if only a file or a directory exists, or if either is fine, and if you need to check if readable or not.

Sometimes you only care the file and/or directory exist, and don't need to read, sometimes you also need to read.

Options

file_exists()

Checks whether a file or directory exists.

If you explicitly only want to know if a file exists, this will return false positives as will return true if it's a directory.

is_readable()

Tells whether a file or directory exists and is readable.

If you explicitly only want to know if a file is readable, this is likely to return false positives as could return true if it's a directory.


Additional options you've not mentioned, but probably need:

is_file()

Tells whether it exists and is a regular file (not a directory).

is_dir()

Tells whether it exists and is a directory (not a file).

Solution & Answer

If you want to check exists and:

  1. Is only a file: Use is_file()
  2. Is only a dir: Use is_dir()
  3. Is file or dir: Use file_exists()

If you want to check exists and is readable:

  1. And is only file: Use is_file() and is_readable()
  2. And is only dir: Use is_dir() and is_readable()
  3. And is file or dir: Use is_readable()

You don't need to use file_exists() and is_readable() together because is_readable() also checks if file_exists().
Pairing is_readable() with either is_file() or is_dir() is only to check if is readable specifically on a file only or specifically on a directory only.


Relying on require

As with most PHP and "what is the best approach/function/etc" - it depends on the scenario.

Relying on just require to manage if the system hangs or not is not really useful. Imagine the required file is not available, so PHP halts as require fails, but the file is simply an article image or user avatar - do you really not want to serve site navigation, logo, links, all kinds of page text and content just because of a missing article image?

VITAL:
If the file is a database connection class, which allows serving of the entire page content, then the file not being there likely requires a system halt.
Of course then you should have some kind of exit strategy, such as serving a 404 page, or an error message - "Sorry there was a fault, we will look into it" etc.

NON VITAL:
It's sometimes valid for the file to not exist, or at least not detrimental to the rest of the application.
Such as if an image file does not exist, you could serve a message or default image, such as a user avatar will just have a default avatar if theirs is not found.

水水月牙 2024-11-25 23:17:21

如果您要require一个文件,则没有必要进行错误检查。使用 require 而不是 include 的目的是在文件不存在时停止执行脚本。

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

If your going to require a file, there's no point in error checking. The point of using require instead of include is to hault execution of the script when the file does not exist.

If you don't care if the file exists, just use include.

黄昏下泛黄的笔记 2024-11-25 23:17:21

答案是:is_read()

bool is_可读(字符串$文件名)

告诉文件是否存在并且是
可读。

https://www.php.net/manual/en/function。是可读的.php

The answer is: is_readable().

bool is_readable ( string $filename )

Tells whether a file exists and is
readable.

https://www.php.net/manual/en/function.is-readable.php

晚雾 2024-11-25 23:17:21
if (is_file($file) && is_readable($file))

因为对于目录来说 is_read($file) 也可以是 true

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

because is_readable($file) can be true also for directories.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文