我使用以下代码来确定file_get_contents是否成功:
if($toon = @file_get_contents('http://us.battle.net/api/wow/character/magtheridon/ronuburggundy'))
{
}
我们最近迁移到一个新的主机,我们正在运行php 5.4.8(我不确定这是否是问题,我们之前有5.4.7)。
$toon = file_get_contents('http://us.battle.net/api/wow/character/magtheridon/ronuburggundy');
应该失败并返回FALSE。但是做一个:
echo $toon;
现在打印:
{"status":"nok", "reason": "Character not found."}
我没有看到导致变化的变化在哪里。
我的目录中有一个自定义的php.ini,但它实际上只将所有allow_url_fopen()设置为On,默认为Off。
感谢您的任何意见。
我没想办法解决这个问题,但我仍然不明白为什么行为会突然改变。
但是下面的帮助函数现在用于检查请求的有效性。
$toon = request_toon("http://us.battle.net/api/wow/character/magtheridon/ronburggundy");
function request_toon($url)
{
$toon = @file_get_contents($url);
if($toon)
{
$toon = json_decode($toon);
if(array_key_exists('status', $toon))
{
return false;
}
else
{
return $toon;
}
}
return false;
}
答案 0 :(得分:2)
这似乎是在服务器端。服务器告诉你它找不到你要找的角色。对file_get_contents()
的调用没有失败,所以它不会返回false。
如果您在浏览器(link)中访问该页面,则可以看到该文件确实包含内容。您将必须测试“未找到字符”的返回内容,然后您将知道搜索该字符失败。