PHP file_get_contents 函数无法使用 Cloudflare(网络服务器代理)

Posted

技术标签:

【中文标题】PHP file_get_contents 函数无法使用 Cloudflare(网络服务器代理)【英文标题】:PHP file_get_contents function not working using Cloudflare (proxy for webserver) 【发布时间】:2013-11-27 23:00:58 【问题描述】:

我已经使用 Cloudflare 几个月了,当我使用 Cloudflare 时,我的支付系统无法 100% 运行。检查脚本不起作用。没有 Cloudflare,一切正常。

我得到的错误是:

php 警告:file_get_contents(): php_network_getaddresses: getaddrinfo failed: 这通常是主机名解析期间的临时错误,意味着本地服务器没有收到来自权威服务器的响应。在第 2 行的 C:\inetpub\wwwroot\check.php 中

PHP 警告:file_get_contents(https://www.eurobellen.nl/bel/check.php?userid=name&ip=ip&ebpin=):打开流失败:php_network_getaddresses:getaddrinfo 失败:这通常是主机名解析期间的临时错误,意味着本地服务器没有收到来自权威服务器的响应。在第 2 行的 C:\inetpub\wwwroot\check.php 中

第 2 行是:

$ebcheck = file_get_contents("https://www.eurobellen.nl/bel/check.php?userid=name&ip=".$ip."&ebpin=".$_GET['ebpin']);

我已经搜索了大约 2 个小时,我尝试了几件事,但我无法解决它。我希望你们知道如何解决它?

【问题讨论】:

你在 cloudflare 中有哪些设置?他们不转发查询字符串吗?您确定您设置了 cookie 等内容以正确转发到您的源服务器吗? (我不确定 cloudflare 的具体情况,但这些是需要解决的常见 CDN 问题)。 我也使用了 Cloudflare 和 CDN (Cloudfront) 并且遇到了同样的问题。您是否解决了该错误以及如何修复它?谢谢, 【参考方案1】:

我们不会影响 php 广告这似乎有点奇怪。您是否收到任何特定的 CloudFlare 错误消息?

【讨论】:

【参考方案2】:

您可以尝试使用 curl 来完成此类任务。 curl 特定于该类型的任务。

function get_contents($url, $ua = 'Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1', $referer = 'http://www.google.com/') 
  if (function_exists('curl_exec')) 
    $header[0] = "Accept-Language: en-us,en;q=0.5";
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_USERAGENT, $ua);
    curl_setopt($curl, CURLOPT_REFERER, $referer);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_TIMEOUT, 10);
    $content = curl_exec($curl);
    curl_close($curl);
  
  else  
    $content = file_get_contents($url);
  
  return $content;

上面的函数检查是否安装了 curl 扩展。如果安装然后使用 curl 无论如何它使用file_get_contents();

【讨论】:

以上是关于PHP file_get_contents 函数无法使用 Cloudflare(网络服务器代理)的主要内容,如果未能解决你的问题,请参考以下文章

PHP file_get_contents 函数超时的几种解决方法

php file_get_contents函数分段读取大记事本或其它文本文件

PHP使用file_get_contents函数POST数据

php如何获取文件内容?

PHP 函数和@functions

file_get_contents()函数