file_exists始终为false

时间:2011-02-03 08:12:14

标签: php file-exists

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

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

为什么此脚本始终返回false

4 个答案:

答案 0 :(得分:10)

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

直到PHP5,file_exists函数用于检测文件或目录是否存在。

在PHP5中,根据this page上的说明,引入了对支持某些URL包装的支持:

  

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

包装器详细here但不幸的是,the http one does not support stat是允许file_exists工作的先决条件。

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

答案 1 :(得分:1)

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

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

并检查HTTP状态代码。

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

然后很可能你的服务器不允许PHP内部的外部连接。

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

确保allow_url_fopen设置为开。