4

我一直在尝试查找目录中是否存在 file_exist。如果不是,我想使用不同的图像。但是当我使用 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]; ?>" />

这正确显示了图像。

请有人帮助我

4

6 回答 6

2

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

所以使用类似file_exists('C:\\foo\\bar\\dropbox\\lib\\admin\\' ...).

于 2012-07-09T09:16:18.337 回答
0

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

假设此文件位于本地计算机上(由 建议localhost,您需要使用本地文件路径访问它。很难猜测这可能适合您,但它可能看起来/var/www/dropbox...

于 2012-07-09T09:16:55.383 回答
0

file_exists()检查文件是否存在于本地文件系统中。您正在传递一个 URL。将其更改为您的保管箱目录的本地路径,它应该可以工作:

if(file_exists('/path/to/your/dropbox'))
于 2012-07-09T09:17:19.373 回答
0

该函数仅适用于 PHP 中file_exists该函数支持的 URL 协议。stat()

目前,http此包装器不支持该协议。

http://uk3.php.net/manual/en/wrappers.http.php

于 2012-07-09T09:18:25.177 回答
0

您正在将 URL 传递给错误参数的 file_exists 函数。而不是在那里传递您的本地路径。

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

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

于 2012-07-09T09:20:44.043 回答
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];
}
于 2012-07-09T09:55:23.817 回答