PHP 8.0更新后,file_get_contents似乎无法工作

9wbgstp7  于 2022-10-22  发布在  PHP
关注(0)|答案(1)|浏览(192)

我不知道这是否与我的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);
hc2pp10m

hc2pp10m1#

我认为这是因为它生成了一个php错误,并且您的错误报告没有打开。
对于第一行,我在测试后得到了一个错误:

PHP Warning:  file_get_contents(https://www.example.com/json.php): Failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
 in /home/genie/fileget.php on line 2

但如果我关闭错误报告,我会得到与您描述的相同的结果。
您应该检查错误报告设置并打开错误报告和显示错误。
第一个json什么都没有的原因是因为它的值是false。如果你var_dump,你会得到一个false,因为你想要包含的页面有一个404标题。
默认情况下,file_get_contents仅返回HTTP 200响应的内容。

相关问题