首页 > 后端开发 > php教程 > 如何修复 PHP 的 `file_get_contents()` 中的'SSL 操作失败,代码 1”错误?

如何修复 PHP 的 `file_get_contents()` 中的'SSL 操作失败,代码 1”错误?

Linda Hamilton
发布: 2024-12-15 08:58:13
原创
968 人浏览过

How to Fix

对 file_get_contents() SSL 证书验证错误进行故障排除

在 PHP 5.6 中尝试使用 file_get_contents() 访问 REST 服务时,您可能会遇到由于证书更严格,出现错误“SSL 操作失败,代码为 1”

问题描述
用户的 PHP 页面尝试使用 file_get_contents() 从 HTTPS 端点获取数据。但是,它失败并出现以下错误:

  • 警告:SSL 操作失败,代码为 1.OpenSSL 错误消息:证书验证失败
  • 警告:无法启用加密
  • 警告:无法打开流:操作失败

Root原因
PHP 5.6 默认引入了更严格的 SSL 验证,需要准确的证书验证。该错误表明客户端无法验证远程服务器的证书。

解决方案
为了解决此问题,关于 5.6 中 OpenSSL 更改的官方 PHP 文档建议禁用证书验证。 注意:此解决方案具有重大安全隐患,仅应在客户端和服务器之间建立信任的受控环境中考虑。

$arrContextOptions = array(
    "ssl" => array(
        "verify_peer" => false,
        "verify_peer_name" => false,
    ),
);

$response = file_get_contents("remote_url", false, stream_context_create($arrContextOptions));
登录后复制
  1. 创建数组 ($arrContextOptions)配置 SSL 选项。
  2. 将 verify_peer 设置为 false 以禁用证书验证。
  3. 设置verify_peer_name 设置为 false 以禁用主机名验证。
  4. 使用 $arrContextOptions 数组创建 Stream_context。
  5. 将流上下文作为第三个参数传递给 file_get_contents()。

重要说明
禁用 SSL证书验证会降低安全性,并可能使您的应用程序遭受窃听和其他安全漏洞。强烈建议正确配置您的系统以使用受信任的 SSL 证书,而不是诉诸此解决方法。

以上是如何修复 PHP 的 `file_get_contents()` 中的'SSL 操作失败,代码 1”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

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