【问题标题】:ERROR Access Denied when using php file_get_content使用 php file_get_content 时错误访问被拒绝
【发布时间】:2012-05-13 00:14:31
【问题描述】:

我正在使用 php file_get_contents 获取网页。
当我从本地主机执行此操作时,一切正常。
但是,一旦我从共享主机中执行此操作,我就会收到以下错误消息:

错误
访问被拒绝
访问被安全策略拒绝
您的网络的安全策略此时不允许您的请求。如果您认为这不正确,请与您的管理员联系。

这是我得到的标题

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');

有什么想法吗?

【问题讨论】:

  • 您的共享主机是否具有相同的 php 设置并启用了 fopen url 包装器?
  • 当我从另一个域读取它的工作原理
  • 检查allow_url_fopen是否在您的共享主机中被禁用,我猜这是导致问题的原因。
  • 它没有返回 false,它返回了一个有效的 HTTP 响应;它实际上正在工作。问题是 Web 服务器返回 403 禁止。我们需要弄清楚为什么。你能发布一些代码吗?我很好奇你是否在 file_get_contents 调用中设置了任何上下文。

标签: php file-get-contents access-denied


【解决方案1】:

远程网络服务器拒绝您的请求。没有具体说明它为什么拒绝你。它可以将服务器配置为拒绝包含共享主机所在位置的 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; 
}  

如果您可以从浏览器访问目标,请尝试复制浏览器发送的所有标头。大多数浏览器都有某种插件,可以准确地向您显示请求中的标头。

【讨论】:

  • 我试过了,但没有用.
  • ...或者有一个代理妨碍了您到达目的地。
【解决方案2】:

因此,Web 服务器检查了浏览器并拒绝了您的连接。你应该试试 fsock 函数。

【讨论】:

    猜你喜欢
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    • 2017-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多