PHP file_get_contents在CentOS上不起作用

时间:2019-01-30 20:35:39

标签: php web-scraping centos

我正在使用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;

在我的MacOS上 On My Mac

在CentOS 7上 On CentOS

两个OS'均为最新版本,并且正在运行PHP 7.3

2 个答案:

答案 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服务。