$var = "http://site.com/image.png";
if (file_exists($var))
echo 'yes';
else
echo 'no';
为什么此脚本始终返回false
?
答案 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
设置为开。