簡體   English   中英

PHP file_get_contents 不適用於 CentOS

[英]PHP file_get_contents not working on CentOS

我正在使用 file_get_contents 來抓取網頁。 代碼非常簡單,在 windows、mac 和幾乎所有基於 debian 的主要 linux 發行版上都可以完美運行。 在 CentOS 上,服務器改為發送 410 Gone。

在 CentOS 7 64 位和 PHP 7.3 上運行

<?php

$x = file_get_contents('https://m.apkpure.com/facebook/com.facebook.katana/download'); 

echo $x;

在我的 MacOS 上在我的 Mac 上

在 CentOS 7 上在 CentOS 上

兩個操作系統都是最新的並且運行 PHP 7.3

您收到此錯誤的原因是您在使用 https 時需要傳遞用戶代理(標頭),否則服務器將拒絕請求。

為了讓使用 cURL 更容易,您可以查看以下功能是否解決了您的問題。 它適用於您的 windows 和 mac 的原因是因為服務器可能正在為請求分配標頭/用戶代理,而 linux 則沒有。

在你的 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");

執行這個命令:

sudo setsebool -P httpd_can_network_connect 1

重新啟動網絡服務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM