我正在尝试使用php的get_file_contents()函数将html文件的内容下载到我的Ubuntu Linux 16.04计算机。但是,当我这样做时,我收到此警告:“未能打开流:中止”
然而,当我在终端命令行上使用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函数的各种“上下文”解决方案,但它们没有解决问题。
P.P.S。我之前尝试过cURL并获得相同的重定向警告,但我承认对cURL不太了解。
答案 0 :(得分:0)
我找到了一个解决方案: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解决方案来完成我的任务,所以我很高兴。