PHP中的file_exists函数无法工作

4

我一直在寻找一个判断目录中是否存在文件的方法,如果不存在我想使用另一张图片。但是当我使用file_exists函数时,它总是返回false。

我使用的代码是:

while($r=mysql_fetch_row($res))
    {  
        if(!file_exists('http://localhost/dropbox/lib/admin/'.$r[5]))
            {
                $file='http://localhost/dropbox/lib/admin/images/noimage.gif';
            }
        else
            $file='http://localhost/dropbox/lib/admin/'.$r[5];}

但是,即使文件存在,该函数始终返回false。我通过以下方式进行了检查:
<img src="<?php echo 'http://localhost/dropbox/lib/admin/'.$r[5]; ?>" />

这样可以正确显示图片。

请有人帮帮我


1
你使用了HTTP地址,但应该使用像/var/www/...这样的地址。 - Ramil Amerzyanov
6个回答

2

file_exists使用的是文件系统路径,而不是URL。在浏览器中使用URL通过网络访问PHP脚本和Web服务器。PHP脚本本身可以访问本地文件系统,并使用它,它不通过网络堆栈访问文件。

因此,请使用类似于file_exists('C:\\foo\\bar\\dropbox\\lib\\admin\\' ...)这样的东西。


0

file_exists 不支持使用 HTTP 地址(您可以通过 HTTP 支持的包装器列表 看到此内容,因为其中未包含 stat)。正如 file_exists 文档所述,可以使用一些包装器(例如 FTP)检查远程文件,但无法通过 HTTP 进行检查,因此 file_exists 将始终返回 false。

假设此文件位于本地计算机上(这是由 localhost 推荐的),则需要使用本地文件路径访问它。很难猜测这对您来说可能是什么,但它可能看起来像 /var/www/dropbox...


0

file_exists() 检查本地文件系统中文件是否存在。你传递的是 URL。将其更改为 Dropbox 目录的本地路径,它应该就可以工作了:

if(file_exists('/path/to/your/dropbox'))

0

0

您正在将URL传递给file_exists函数,这是错误的参数。相反,请在那里传递您的本地路径。

要了解有关file_exist()函数的更多信息,请阅读此php手册:

http://php.net/manual/en/function.file-exists.php


0

您正在将URL传递给file_exists函数,这是错误的。相反,请传递文件夹的本地路径。

while($r=mysql_fetch_row($res))
{  
 if(!file_exists('/dropbox/lib/admin/'.$r[5]))
 {
  $file='/dropbox/lib/admin/images/noimage.gif';
 }
 else
 $file='/dropbox/lib/admin/'.$r[5];
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接