【问题标题】:PHP file_get_contents only works for some serversPHP file_get_contents 仅适用于某些服务器
【发布时间】:2018-02-09 17:37:56
【问题描述】:

我正在开发一个包含大量文件的网站。因此,我为我的文件(例如图像和 txt 文件)制作了一个单独的服务器。问题是 php 的 file_get_contents 函数不适用于该服务器。

我尝试了echo file_get_contents("http://url");,但我什么也没得到,但是当我尝试echo file_get_contents("http://google.com"); 时,我得到了谷歌的主页。 curl 连接也是如此。

$ch = curl_init();
$url = "http://running-files.rf.gd/hello.html";
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_MAXREDIRS, 5);   
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

$body = curl_exec($ch);
$info  = curl_getinfo($ch); 
$error = curl_errno($ch);  
curl_close($ch);  

echo $body;

我的猜测是 .htaccess 文件中需要一些东西。有人有什么建议吗?

【问题讨论】:

  • 那么使用curl也无法得到响应?使用 curl_getinfo 从连接中提取所有信息,例如状态代码。
  • @Pete 你介意我要求你指定网址吗?
  • running-files.rf.gd 但它重定向到主服务器
  • file_get_contents() 默认情况下应该遵循重定向,但 curl 不会。您需要指定curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  • 我需要获取running-files.rf.gd/Trails/…等文件

标签: php .htaccess curl file-get-contents


【解决方案1】:

如果您打开一个带有特殊字符的 URI, (例如空格)您需要使用 urlencode() 对 URI 进行编码。

例如:

file_get_contents("http://domain-name.com?id=".urlencode("something with special characters"));

“带有特殊字符的东西”在大多数情况下可以是变量

【讨论】:

  • 不是一个真正的答案,因为问题中没有任何内容暗示他们正在使用特殊字符。并且 urlencode 应该用于单个值,而不是整个 URL。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-26
  • 1970-01-01
  • 1970-01-01
  • 2020-05-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多