以前知道file_exists不能检查远程文件是否存在,但不知道如何检查远程文件是否存在,
今天在看PHP信息研究中心博客的时候发现一个函数get_headers
原文在这里:
如何检查某个远程文件是否存在
http://www.xqs.cn/index.php?load=read&id=95
get_headers(PHP5) — 取得服务器响应一个 HTTP 请求所发送的所有标头
get_headers() 返回一个数组,包含有服务器响应一个 HTTP 请求所发送的标头。如果失败则返回 FALSE 并发出一条 E_WARNING 级别的错误信息。
如果将可选的 format 参数设为 1,则 get_headers() 会解析相应的信息并设定数组的键名。
返回类似
Array (
[0] => HTTP/1.1 200 OK
[Date] => Sat, 29 May 2004 12:28:14 GMT
[Server] => Apache/1.3.27 (Unix) (Red-Hat/Linux)
[Last-Modified] => Wed, 08 Jan 2003 23:11:55 GMT
[ETag] => "3f80f-1b6-3e1cb03b"
[Accept-Ranges] => bytes
[Content-Length] => 438
[Connection] => close
[Content-Type] => text/html
)
原文作者用判断是否返回数组的方式我感觉不妥
因为http文件状态可能不是 200 而是其他
因为我测试了一下我的网站上其实并不存在的东西,返回的是页面状态应该404 不存在 但原作者的函数依然返回true
实际上应该根据返回的页面状态来判断