我正在使用file_get_contents抓取网页。该代码非常简单,可以在Windows,Mac和几乎所有主要的基于debian的主要Linux发行版上完美运行。在CentOS上,服务器改为发送410 Gone。
使用PHP 7.3在CentOS 7 64位上运行
<?php
$x = file_get_contents('https://m.apkpure.com/facebook/com.facebook.katana/download');
echo $x;
两个OS'均为最新版本,并且正在运行PHP 7.3
答案 0 :(得分:1)
出现此错误的原因是因为使用https时需要传递用户代理(标题),否则服务器将拒绝该请求。
为了使事情变得更轻松,更好地使用cURL,您可以查看下面的函数是否解决了您的问题。它可以在Windows和Mac上运行的原因是服务器可能正在为请求分配标头/用户代理,而Linux没有。
一种解决此问题的方法是在php.ini中启用allow_url_fopen
尝试以下功能。无需启用allow_url_fopen
function scraper($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
$data = curl_exec($ch);
curl_close($ch);
echo $data;
}
scraper("https://m.apkpure.com/facebook/com.facebook.katana/download");
答案 1 :(得分:0)
执行此命令:
sudo setsebool -P httpd_can_network_connect 1
重新启动Web服务。