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中文網其他相關文章!