我不知道这是否与我的web服务器从7.4更新到PHP 8.0有关,但这似乎发生在更新之后。
我正在从另一个URL检索JSON(并解码它)。但是在更新之后,file_get_contents
没有返回任何内容——它是空的。
这就是我试图找到问题的原因:
$json = file_get_contents("https://www.example.com/json.php"); // not actual link
echo $json . "<br>";
$dataArray = json_decode($json);
echo var_dump($dataArray);
第一个回波是空白的,第二个回波是NULL
。
这里可能出了什么问题?这是在页面的顶部,因此在此之前没有代码。
编辑我添加了代码以获取错误,这是我得到的结果的开始:
Warning: file_get_contents(https://www.example.com/json.php): Failed to open stream: HTTP request failed! HTTP/1.1 406 Not Acceptable
编辑2
建议的解决方案是,我将$ctx
变量添加到file_get_contents中,但仍然得到相同的错误。
$ctx = stream_context_create(['http' => ['protocol_version' => '1.0']]);
echo file_get_contents('https://LINKHERE.com', false, $ctx);
1条答案
按热度按时间hc2pp10m1#
我认为这是因为它生成了一个php错误,并且您的错误报告没有打开。
对于第一行,我在测试后得到了一个错误:
但如果我关闭错误报告,我会得到与您描述的相同的结果。
您应该检查错误报告设置并打开错误报告和显示错误。
第一个json什么都没有的原因是因为它的值是false。如果你var_dump,你会得到一个false,因为你想要包含的页面有一个404标题。
默认情况下,file_get_contents仅返回HTTP 200响应的内容。