You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

file_get_contents获取URL源码失败,代码报错求助(allow_fopen已开启)

排查file_get_contents访问HTTPS链接失败的问题

你的代码:

$homepage = file_get_contents('https://www.google.com');
echo $homepage;
$file = 'code.txt';

file_put_contents($file, $homepage);

报错信息:

PHP Warning: file_get_contents(https://www.google.com): Failed to open stream: No such file or directory in C:\Users\Steve\public_html\index.php on line 11

以下是几个实用的排查方向:

  • OpenSSL扩展未启用:file_get_contents访问HTTPS链接必须依赖OpenSSL扩展。打开php.ini文件,找到extension=openssl,去掉前面的分号注释,重启Web服务器(如Apache、Nginx)后重试。

  • DNS解析异常:本地DNS无法解析google.com域名,导致找不到目标服务器。打开命令提示符执行ping google.com,查看是否能返回正常的IP和连通信息。如果不行,尝试将本地DNS改为8.8.8.8再测试。

  • 网络拦截限制:本地防火墙、杀毒软件或代理拦截了HTTPS请求。可以暂时关闭防火墙/杀毒软件,或检查代理设置是否正确。如果是公司内网,需联系管理员开放相关访问权限。

  • allow_url_fopen配置未实际生效:即便你确认开启了该配置,也可能修改了错误的php.ini文件(CLI和Web服务可能使用不同配置)。在代码中添加var_dump(ini_get('allow_url_fopen'));,运行后查看输出是否为bool(true),确认配置是否真的生效。

  • 目标网站访问受限:国内网络环境下,google.com的IP可能被屏蔽。先测试访问其他HTTPS网站(如https://www.baidu.com),如果代码能正常获取源码,那就是谷歌的访问限制问题。

另外,推荐用cURL替代file_get_contents,它对HTTPS的支持更稳定,还能方便排查错误,示例代码:

$ch = curl_init('https://www.google.com');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 测试阶段可关闭证书验证,生产环境建议开启
$homepage = curl_exec($ch);

if(curl_errno($ch)){
    echo '请求错误:' . curl_error($ch);
}

curl_close($ch);
echo $homepage;
file_put_contents('code.txt', $homepage);

内容的提问来源于stack exchange,提问作者Steve

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 03:01:02