首頁 > 後端開發 > php教程 > 為什麼 `file_get_contents()` 無法檢索此伺服器上的外部 URL?

為什麼 `file_get_contents()` 無法檢索此伺服器上的外部 URL?

Patricia Arquette
發布: 2024-12-13 14:57:11
原創
830 人瀏覽過

Why is `file_get_contents()` Failing to Retrieve External URLs on This Server?

特定伺服器上的外部URL 的File_get_contents 問題

問題:

使用PHP 函數嗎伺服器上的外部URL 的內容,則傳回空結果。但是,當本機使用或存取同一伺服器上的內部 URL 時,該函數可以正常運作。

可能原因:

該問題可能與 PHP.ini 有關配置設定。

解決方案:

確定哪個PHP.ini 配置導致了問題,請按照以下步驟操作:

  1. 檢查allow_url_fopen 設定: 此設定控制PHP 是否可以透過fopen 系列存取外部URL的功能。如果設定為 Off,file_get_contents() 將無法從外部 URL 檢索內容。

    檢查 PHP.ini 檔案中是否有以下行:

    allow_url_fopen = Off
    登入後複製

    如果是設定為關閉,將其變更為開啟。

  2. 檢查allow_url_include設定: 此設定控制 PHP 是否可以在腳本中包含外部 URL。如果設定為 Off,file_get_contents() 可能無法從外部 URL 檢索內容。

    檢查 PHP.ini 檔案中是否有以下行:

    allow_url_include = Off
    登入後複製

    如果是設定為關閉,將其變更為開啟。

  3. 使用替代方案function: 如果上述設定無法解決問題,您可以使用替代函數來模仿 file_get_contents() 的行為。其中一個函數是curl_init():

    function get_content($URL){
       $ch = curl_init();
       curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
       curl_setopt($ch, CURLOPT_URL, $URL);
       $data = curl_exec($ch);
       curl_close($ch);
       return $data;
    }
    
    echo get_content('http://example.com');
    登入後複製

以上是為什麼 `file_get_contents()` 無法檢索此伺服器上的外部 URL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板