我刚刚将一个项目从localhost移到我的远程服务器上,并注意到我的一些脚本停止了工作。最重要的是依靠file_get_contents()
从另一个脚本中获取JSON值的那个。
PHP版本是5.2.4
allow_url_fopen
已开启
警告:
file_get_contents()
[function.file-get-contents]
:php_network_getaddresses
:getaddrinfo
失败:/var/www/html/2009/functions/functions.products.php
上line 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
}
答案 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在同一台机器上?