首頁 >後端開發 >php教程 >為什麼 PHP 中 `file_get_contents` 無法取得外部 URL,如何修正?

為什麼 PHP 中 `file_get_contents` 無法取得外部 URL,如何修正?

Susan Sarandon
Susan Sarandon原創
2024-12-09 00:52:10213瀏覽

Why Does `file_get_contents` Fail to Fetch External URLs in PHP, and How Can I Fix It?

PHP file_get_contents 外部的URL 屏障:深入研究php.ini

在PHP 領域,file_get_contents 函數提供了一個方便的方法檢索文件或遠端資源的內容。然而,在存取外部 URL 時,php.ini 檔案中的某些配置可能會妨礙其功能。

正如使用者的困境所證明的那樣,file_get_contents('http://example.com') 可能會產生相反的結果,具體取決於伺服器環境。雖然它在某些設定中按預期運行,但它在特定伺服器上產生空結果,儘管在訪問內部文件時在本地工作。

關鍵在於識別導致此差異的特定 php.ini 配置。一個潛在的罪魁禍首是allow_url_fopen指令,它控制PHP腳本開啟外部URL的能力。如果指令設為 0,將禁止透過 file_get_contents 等 PHP 函數存取外部 URL。

此外,使用者體驗突顯了存取本機檔案和外部檔案之間的差異。 allow_url_fopen 指令不會影響 PHP 與本機檔案的互動。然而,當涉及遠端資源時,該函數的行為取決於指令值 1 是否存在。

為了規避 php.ini 帶來的潛在障礙,可以採用替代方法。一個可行的選擇是利用答案中提供的函數:

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;
}

此函數模擬 file_get_contents 的行為,但利用 cURL 的功能與外部 URL 進行互動。透過使用 cURL,即使 php.ini 設定限制了 allowed_url_fopen 的使用,您也可以靈活地存取遠端資源。

以上是為什麼 PHP 中 `file_get_contents` 無法取得外部 URL,如何修正?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn