file_exists 始终为 false

发布于 2024-10-15 23:22:20 字数 159 浏览 6 评论 0原文

$var = "http://site.com/image.png";

if (file_exists($var))
    echo 'yes';
else
    echo 'no';

为什么这个脚本总是返回false

$var = "http://site.com/image.png";

if (file_exists($var))
    echo 'yes';
else
    echo 'no';

Why does this script always returns false?

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

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

发布评论

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

评论(4

亢潮 2024-10-22 23:22:20

因为这实际上不是一个文件,而是一个 URL。

在 PHP5 之前,file_exists 函数旨在检测文件或目录是否存在。

在 PHP5 中,引入了支持某些 URL 包装器的功能,如 上的注释所示本页

提示:从 PHP 5.0.0 开始,此函数还可以与某些 URL 包装器一起使用。请参阅支持的协议和包装器以确定哪些包装器支持 stat() 系列功能。

包装器在此处有详细说明,但不幸的是,http 不支持 stat,这是允许 file_exists 工作。

如果您在服务器上运行,则可以使用 $_SERVER['DOCUMENT_ROOT'] 对其进行转换,或者找到其他方法在文件系统上定位它。

Because that's not actually a file, rather it's a URL.

Up until PHP5, the file_exists function was intended to detect whether a file or directory exists.

At PHP5, support was introduced to allow support for some URL wrappers, as per the note on this page:

Tip: As of PHP 5.0.0, this function can also be used with some URL wrappers. Refer to Supported Protocols and Wrappers to determine which wrappers support stat() family of functionality.

The wrappers are detailed here but, unfortunately, the http one does not support stat, a pre-requisite to allowing file_exists to work.

If you're running on the server, you could possibly convert it using $_SERVER['DOCUMENT_ROOT'] or find another way to locate it on the file system.

饮湿 2024-10-22 23:22:20

如果您想检查远程文件(实际上是“资源”)是否存在,请使用:

$i = get_headers($url);
$ok = strpos($i[0], "200");

并检查 HTTP 状态代码。

If you want to check the presence of remote files (actually "resources") then use:

$i = get_headers($url);
$ok = strpos($i[0], "200");

And check the HTTP status code.

沫尐诺 2024-10-22 23:22:20

那么很可能您的服务器不允许 PHP 内部的外部连接。

您可以通过打开本地文件来检查这一点,看看是否有效。如果是这样,则您的代码是正确的。

确保 allow_url_fopen 设置为“ON”。

Then most probably your server does not allow outside connections from within PHP.

You can check this by opening a local file and see if that works. If it does, your code is correct.

Make sure allow_url_fopen is set to ON.

倾城花音 2024-10-22 23:22:20

$var 变量应该描述系统上的路径,而不是 URL。例如

$var = "/var/www/html/image.png";

The $var variable should describe a path on the system, not a URL. For example

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