【问题标题】:file_get_contents not working from my serverfile_get_contents 在我的服务器上不起作用
【发布时间】:2016-08-08 03:52:38
【问题描述】:

我正在使用以下代码抓取网站

require 'simple_html_dom.php';

$opts = array('http'=>array('header' => "User-Agent:MyAgent/1.0\r\n"));
$context = stream_context_create($opts);
$header = file_get_contents('http://www.cinnetwork.org',false,$context);
print_r($header);

此代码在 phpfiddle 中正常工作。但是当我从我的服务器上使用它时,它会说

警告:file_get_contents(http://www.cinnetwork.org):打开失败 流:连接超时

我也尝试过使用 curl。它也显示了类似的错误。

【问题讨论】:

  • 配置allow_url_fopen是否开启?
  • allow_url_fopen 已开启
  • 该代码适用于其他网站。
  • 听起来他们在阻止你。尝试使用代理。

标签: php curl simple-html-dom


【解决方案1】:
$url= 'https://example.com';

$arrContextOptions=array(
  "ssl"=>array(
        "verify_peer"=>false,
        "verify_peer_name"=>false,
    ),
);  

$response = file_get_contents($url, false, stream_context_create($arrContextOptions));

【讨论】:

  • 在 phpfiddle 中工作,但从我的服务器执行时显示相同的错误无法打开流:连接超时。但是同样的代码也适用于其他网站
  • 虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高帖子的质量。请记住,您正在为将来的读者回答问题,而这些人可能不知道您的代码建议的原因。也请尽量不要用解释性 cmets 挤满你的代码,因为这会降低代码和解释的可读性!
【解决方案2】:

一个建议,你可以改用 CURL ..

【讨论】:

  • 尝试使用不同的 url .. 以确保该网站是否阻止某些内容 .. 尝试使用 curl 获取 yahoo 和 google 之类的数据,然后使用文件获取内容 ..
  • cinnetwork.org"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_BINARYTRANSFER, true); $content = curl_exec($ch) ; curl_close($ch); echo $content; ?>
  • 我在我的本地服务器上尝试了上面的代码并且它工作正常..在你的实时服务器中必须有一些模块被禁用或卸载..
  • 该代码适用于其他网站,但不适用于该特定网站。但是当我在phpfiddle.org 中为同一网站尝试相同的代码时,它可以工作
  • 使用类似下面的代码检查 curl 错误 .. // 检查是否发生任何错误 if(curl_errno($ch)) { echo 'Curl error: ' . curl_error($ch); }
猜你喜欢
  • 2013-10-02
  • 1970-01-01
  • 1970-01-01
  • 2014-06-23
  • 1970-01-01
  • 2012-11-15
  • 2011-10-07
  • 2011-04-24
  • 2018-01-11
相关资源
最近更新 更多