fopen()
打开它,然后使用fgetcsv
解析数据。我需要检查文件是否确实存在。这不起作用,总是返回true
:
$response->setStatusCode(500);
$response->setContent($url);
if (($handle = fopen($url, "r")) == FALSE) return $response;
问题是,即使资源不存在,我的ISP也会将我重定向到其搜索页面(我正在本地开发)。
如果可能,只检查网址的MIME就可以了。有什么帮助吗?
答案 0 :(得分:2)
尝试使用get_headers制作一个HEAD请求。您应该能够从那里的状态代码中查看资源是否可用。
答案 1 :(得分:0)
在本地计算机网络配置中设置其他DNS服务器。例如,您可以使用谷歌DNS服务器(http://code.google.com/speed/public-dns)。
答案 2 :(得分:-1)
解决方案:禁用重定向。通常,这涉及将DNS服务器更改为由ISP管理的非。
解决方法:在stream_get_meta_data()
返回的资源上调用fopen()
。在http:
协议的情况下,返回的数组将具有包含所有HTTP响应头的wrapper_data
项。请注意,如果涉及重定向,所有响应将位于同一个数组中,如下例所示。
$ php -r '$a = fopen("http://www.google.com/", "r"); print_r(stream_get_meta_data($a));' Array ( [wrapper_data] => Array ( [0] => HTTP/1.0 302 Found [1] => Location: http://www.google.co.uk/ [2] => Cache-Control: private [3] => Content-Type: text/html; charset=UTF-8 [4] => Set-Cookie: PREF=ID=5e6e2f87c95ce139:FF=0:TM=1317669253:LM=1317669253:S=uaGlatRCh9XB8oAI; expires=Wed, 02-Oct-2013 19:14:13 GMT; path=/; domain=.google.com [5] => Date: Mon, 03 Oct 2011 19:14:13 GMT [6] => Server: gws [7] => Content-Length: 221 [8] => X-XSS-Protection: 1; mode=block [9] => HTTP/1.0 200 OK [10] => Date: Mon, 03 Oct 2011 19:14:13 GMT [11] => Expires: -1 [12] => Cache-Control: private, max-age=0 [13] => Content-Type: text/html; charset=ISO-8859-1 [14] => Set-Cookie: PREF=ID=9c5c0212c24c4ca1:FF=0:TM=1317669253:LM=1317669254:S=P7nzy5lBsmvuZm8A; expires=Wed, 02-Oct-2013 19:14:14 GMT; path=/; domain=.google.co.uk [15] => Set-Cookie: NID=51=J8T2rxPOdsbfWlIWhWIdL4uerFqLibBV2LDh81OdqmfvRvq3zXwAJ7tsNEmBby_h2wT4Qv8Wd7QK6CyG-leo9mgR4RbFeNpw83mMGlvCHhU0uiUv6ki2doinv1EBU5XM; expires=Tue, 03-Apr-2012 19:14:14 GMT; path=/; domain=.google.co.uk; HttpOnly [16] => Server: gws [17] => X-XSS-Protection: 1; mode=block ) [wrapper_type] => http [stream_type] => tcp_socket/ssl [mode] => r [unread_bytes] => 4096 [seekable] => [uri] => http://www.google.com/ [timed_out] => [blocked] => 1 [eof] => )