为什么命令行上的 wget 可以工作,而 file_get_contents 却不行?

Why does wget on the command line work, but file_get_contents does not?

我正在尝试使用 php 的 get_file_contents() 函数将 html 文件的内容下载到我的 Ubuntu Linux 16.04 计算机.但是,当我这样做时,我收到此警告:"failed to open stream: the , aborting"

然而,当我在终端命令行上使用 wget 时,它会快速下载文件内容。

那么为什么 file_get_contents 对此不起作用?这是我的 php 代码,它会产生警告:

$testDownload = file_get_contents("https://ebird.org/region/US-AL-001?yr=all");

echo $testDownload;

在我的 Ubuntu 终端命令行上,这是我的 bash 代码,它可以快速完美地运行:

wget https://ebird.org/region/US-AL-001?yr=all

我想使用 php 因为我想自动下载一些文件并且需要一些代码来完成它,我觉得使用 php 比bash.

P.S。我尝试了 Stack Overflow 上建议的针对 file_get_contents 函数的各种 "context" 解决方案,但它们并没有解决问题。

P.P.S。我之前尝试过 cURL 并得到了相同的重定向警告,尽管我承认对 cURL 了解不多。

我找到了一个解决方案:php 中的 shell_exec() 函数允许我在我的 php 脚本中使用 bash 的 wget 命令行函数。我试过了,它奏效了。 (我必须更改下载文件的所有权才能访问它们。)这是有效的代码:

$output = shell_exec('wget https://ebird.org/region/US-AL-005?yr=all');

我还是不明白为什么wget可以得到文件内容,而file_get_contents不能。但是使用 shell_exec() 我找到了一个 php 解决方案来完成我的任务,所以我很高兴。