PHP:file_get_contents($ loc)失败

时间:2009-02-12 16:10:49

标签: php

我刚刚将一个项目从localhost移到我的远程服务器上,并注意到我的一些脚本停止了工作。最重要的是依靠file_get_contents()从另一个脚本中获取JSON值的那个。

PHP版本是5.2.4
allow_url_fopen已开启

  

警告:file_get_contents() [function.file-get-contents]php_network_getaddressesgetaddrinfo失败:/var/www/html/2009/functions/functions.products.phpline 5未知名称或服务

     

警告:file_get_contents(http://data.example.com/new-data.php) [function.file-get-contents]:无法在Success in /var/www/html/2009/functions/functions.products.php上打开流line 5

脚本正在运行:http://www.example.com
传递给函数的位置是http://data.example.com/new-data.php

注意:相同的域名,但有两个不同的服务器。

function getData() {
  $location = "http://data.mysite.com/new-data.php";
  $contents = file_get_contents($location);
  $jsonVars = json_decode($contents);
  return $jsonVars
}

5 个答案:

答案 0 :(得分:18)

  

名称或服务未知

DNS破产了。你可以从机器上的shell ping data.mysite.com(假设你有一个)吗?

现在尝试用固定的IP地址替换data.mysite.com

答案 1 :(得分:7)

你也可以尝试卷曲:

$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_URL, 'http://url.url');
$result = curl_exec($curl);
curl_close($curl);

你可以在$result得到你想要的东西。

答案 2 :(得分:1)

查看远程服务器上的/ etc / hosts。如果它为空,则需要向其添加“127.0.0.1 localhost”。

除非它是VPS的一种,其中环回接口击中外部机器;在那些,你需要使用你的VPS的IP号而不是127.0.0.1。

答案 3 :(得分:1)

如果您确定它不是DNS问题,请尝试重新启动Apache。在头部刮伤20分钟后,这为我解决了。

答案 4 :(得分:0)

请包含更多信息,$内容是否​​包含任何内容?记得做json_decode($ contents,true),如果你想把它作为一个php数组,否则它会返回一个stdClass。

解析主机名有问题吗? data.mysite.com与mysite.com在同一台机器上?