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函数分段读取大记事本或其它文本文件