我正在使用php file_get_contents来获取网页 当我从我的本地主机做这件事时一切正常 但是,只要我从共享主机执行此操作,我就会收到以下错误消息:
ERROR
访问被拒绝
访问被安全策略拒绝
您网络的安全策略会阻止您的请求在此时被允许。如果您认为这不正确,请与您的管理员联系。
这是我回来的标题
array(4) { [0]=> string(22) "HTTP/1.0 403 Forbidden" [1]=> string(23)
"Content-Type: text/html" [2]=> string(17) "Connection: close" [3]=> string(19)
"Content-Length: 353" }
代码很简单
$page = file_get_contents('http://www.somedomain.com/');
如果我尝试当前页面它可以工作
$page = file_get_contents('http://stackoverflow.com/questions/10565054/error-access-denied-when-using-php-file-get-content');
任何想法?
答案 0 :(得分:4)
远程网络服务器拒绝您的请求。没有特别说明为什么否认你。它可以将服务器配置为拒绝包含共享主机所在位置的IP范围。可能是服务器需要某些头信息(如主机条目,或某个user_agent,或其他东西)。尝试设置一些HTTP上下文内容来安抚您尝试联系的服务器。以下是file_get_contents页面中的示例。
function file_get_contents_utf8($fn) {
$opts = array(
'http' => array(
'method'=>"GET",
'header'=>"Content-Type: text/html; charset=utf-8"
)
);
$context = stream_context_create($opts);
$result = @file_get_contents($fn,false,$context);
return $result;
}
如果您可以从浏览器访问目标,请尝试复制浏览器发送的标题。大多数浏览器都有某种插件,可以准确显示请求中的标题。
答案 1 :(得分:0)
因此,Web服务器检查了浏览器并拒绝了您的连接。你应该尝试使用fsock函数。