首页 > 后端开发 > php教程 > 为什么 PHP 中 `file_get_contents` 无法获取外部 URL,如何修复?

为什么 PHP 中 `file_get_contents` 无法获取外部 URL,如何修复?

Susan Sarandon
发布: 2024-12-09 00:52:10
原创
193 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板