0

0

PHP用file_get_contents请求https网址报错咋解_PHP解https报错法【SSL】

蓮花仙者

蓮花仙者

发布时间:2026-02-19 19:16:03

|

491人浏览过

|

来源于php中文网

原创

php 的 file_get_contents 请求 https 失败,90% 是 openssl 未正确配置或缺少可信 ca 证书;应配置 php.ini 中的 openssl.cafile 指向有效 cacert.pem 文件并重启服务。

php用file_get_contents请求https网址报错咋解_php解https报错法【ssl】

直接说结论:PHP 的 file_get_contents 请求 HTTPS 地址失败,90% 是因为 OpenSSL 未正确配置或系统缺少可信 CA 证书,不是代码写错了。

为什么 file_get_contents 访问 HTTPS 会报错?

常见错误信息包括:SSL operation failed with code 1Unable to set private key filecertificate verify failed。根本原因不是 PHP 版本太低,而是 PHP 运行时无法验证远程服务器的 SSL 证书——它找不到或读不了系统的 CA 证书包。

  • Windows 下 PHP 默认不带 CA 证书,openssl.cafile 为空
  • Linux/macOS 上虽然可能有系统证书(如 /etc/ssl/certs/ca-certificates.crt),但 PHP 的 openssl.cafilecurl.cainfo 没指向它
  • 某些旧版 PHP(如 5.6 以前)默认不校验证书,升级后反而暴露问题

最稳妥的修复方式:配置 openssl.cafile

不是改代码绕过验证,而是让 PHP 能真正验证证书——安全且兼容性好。

  • 下载最新 CA 证书包:https://www.php.cn/link/5fe4dadcdb001d8566cd20e6d8a20251,保存为 /path/to/cacert.pem(Linux/macOS 推荐 /usr/local/etc/php/cacert.pem,Windows 可放 PHP 安装目录下)
  • php.ini 中添加或修改:
    openssl.cafile="/path/to/cacert.pem"
  • 重启 Web 服务或 PHP-FPM,用 php -i | grep openssl 确认生效
  • 之后 file_get_contents('https://example.com') 就能正常工作

临时调试可用的上下文参数(不推荐上线)

仅限开发环境快速验证是否是证书问题,绝不能用于生产:

码上飞
码上飞

码上飞(CodeFlying) 是一款AI自动化开发平台,通过自然语言描述即可自动生成完整应用程序。

下载

立即学习PHP免费学习笔记(深入)”;

  • stream_context_create 关闭证书校验:
    $ctx = stream_context_create(['http' => ['ignore_errors' => true, 'timeout' => 5]]);<br>$ctx = stream_context_create(['ssl' => ['verify_peer' => false, 'verify_peer_name' => false]]);<br>file_get_contents('https://example.com', false, $ctx);
  • 注意:verify_peer_name 必须和 verify_peer 同时设为 false,否则仍会报错
  • 这样会失去 HTTPS 的身份认证和防中间人能力,上线前必须撤掉

其他容易被忽略的点

有些问题看似是 SSL,实则卡在更底层:

  • PHP 编译时没启用 OpenSSL(检查 php -m | grep openssl 是否有输出)
  • SELinux 或 AppArmor 限制了 PHP 进程读取证书文件(Linux 上可临时 setenforce 0 测试)
  • 某些企业网络代理会替换 HTTPS 证书,此时需把代理的根证书加入 cacert.pem
  • allow_url_fopen=Off 会导致 file_get_contents 直接拒绝所有 URL,先确认这个配置是 On

CA 证书路径配错比代码逻辑错更难排查——它不报路径错误,只默默失败。建议把 cacert.pem 放绝对路径,并用 file_exists() 在代码里主动检查一次。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
curl_exec
curl_exec

curl_exec函数是PHP cURL函数列表中的一种,它的功能是执行一个cURL会话。给大家总结了一下php curl_exec函数的一些用法实例,这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用。他的返回值成功时返回TRUE, 或者在失败时返回FALSE。

452

2023.06.14

linux常见下载安装工具
linux常见下载安装工具

linux常见下载安装工具有APT、YUM、DNF、Snapcraft、Flatpak、AppImage、Wget、Curl等。想了解更多linux常见下载安装工具相关内容,可以阅读本专题下面的文章。

181

2023.10.30

windows查看端口占用情况
windows查看端口占用情况

Windows端口可以认为是计算机与外界通讯交流的出入口。逻辑意义上的端口一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。怎么查看windows端口占用情况呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

1184

2023.07.26

查看端口占用情况windows
查看端口占用情况windows

端口占用是指与端口关联的软件占用端口而使得其他应用程序无法使用这些端口,端口占用问题是计算机系统编程领域的一个常见问题,端口占用的根本原因可能是操作系统的一些错误,服务器也可能会出现端口占用问题。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

1150

2023.07.27

windows照片无法显示
windows照片无法显示

当我们尝试打开一张图片时,可能会出现一个错误提示,提示说"Windows照片查看器无法显示此图片,因为计算机上的可用内存不足",本专题为大家提供windows照片无法显示相关的文章,帮助大家解决该问题。

820

2023.08.01

windows查看端口被占用的情况
windows查看端口被占用的情况

windows查看端口被占用的情况的方法:1、使用Windows自带的资源监视器;2、使用命令提示符查看端口信息;3、使用任务管理器查看占用端口的进程。本专题为大家提供windows查看端口被占用的情况的相关的文章、下载、课程内容,供大家免费下载体验。

460

2023.08.02

windows无法访问共享电脑
windows无法访问共享电脑

在现代社会中,共享电脑是办公室和家庭的重要组成部分。然而,有时我们可能会遇到Windows无法访问共享电脑的问题。这个问题可能会导致数据无法共享,影响工作和生活的正常进行。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2361

2023.08.08

windows自动更新
windows自动更新

Windows操作系统的自动更新功能可以确保系统及时获取最新的补丁和安全更新,以提高系统的稳定性和安全性。然而,有时候我们可能希望暂时或永久地关闭Windows的自动更新功能。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

851

2023.08.10

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

660

2026.02.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 12.1万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.2万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号