$var = "http://site.com/image.png";
if (file_exists($var))
echo 'yes';
else
echo 'no';
为什么此脚本始终返回false
?file_exists始终为false
$var = "http://site.com/image.png";
if (file_exists($var))
echo 'yes';
else
echo 'no';
为什么此脚本始终返回false
?file_exists始终为false
因为这是而不是实际上是一个文件,而不是它的URL。
直到PHP5,file_exists
函数的目的是检测文件或目录是否存在。
在PHP5,支持来允许某些URL wrapper支持,按照说明上this page:
提示:作为PHP 5.0.0,这个功能也可以使用一些URL封装器。请参阅支持的协议和包装以确定哪些包装支持stat()系列功能。
的包装有详细here但不幸的是,the http
one does not support stat
,一个先决条件,允许file_exists
工作。
如果您在服务器上运行,可以使用$_SERVER['DOCUMENT_ROOT']
转换它,或者找到另一种方法在文件系统上找到它。
$var
变量应该描述系统上的路径,而不是URL。例如
$var = "/var/www/html/image.png";
那么很可能您的服务器不允许PHP内部的外部连接。
你可以通过打开一个本地文件来检查它是否有效。如果是这样,你的代码是正确的。
确保allow_url_fopen
设置为ON。
没关系,我跳到了结论。 @paxdiablo有正确的答案。 – berkes 2011-02-03 08:17:29
如果你想查询的远程文件的存在(实际上是“资源”),然后使用:
$i = get_headers($url);
$ok = strpos($i[0], "200");
并检查HTTP状态代码。
因为你正在寻找一个URL,而不是你的计算机(或网络服务器)上的物理路径 – Phill 2011-02-03 08:14:26