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

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

Barbara Streisand
Barbara Streisand原创
2024-12-25 10:31:17671浏览

How to Fix

使用 file_get_contents() 排查 SSL 问题

在 PHP 5.6 中,对 OpenSSL 处理进行了更改,这些更改偶尔会导致“SSL”等错误操作失败,代码为 1。”据用户报告,在尝试使用 file_get_contents() 访问 REST 服务时发生了这样一个实例。

问题描述:

用户在访问时遇到错误尝试通过 file_get_contents() 从 REST 服务检索数据:

$response = file_get_contents("https://maps.co.weber.ut.us/arcgis/rest/services/SDE_composite_locator/GeocodeServer/findAddressCandidates?Street=&SingleLine=3042+N+1050+W&outFields=*&outSR=102100&searchExtent=&f=json");

错误消息显示:

Warning: file_get_contents(): SSL operation failed with code 1.
OpenSSL Error messages: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

解决方案:

为了解决此问题,用户执行了以下步骤:

  1. 引用了 PHP 5.6 OpenSSL 迁移文档位于http://php.net/manual/en/migration56.openssl.php。
  2. 了解需要设置为 false 的附加“verify_peer_name”参数。
  3. 调整了他们的 PHP 代码包含更新的参数:
$arrContextOptions=array(
    "ssl"=>array(
        "verify_peer"=>false,
        "verify_peer_name"=>false,
    ),
);

$response = file_get_contents("https://maps.co.weber.ut.us/arcgis/rest/services/SDE_composite_locator/GeocodeServer/findAddressCandidates?Street=&SingleLine=3042+N+1050+W&outFields=*&outSR=102100&searchExtent=&f=json", false, stream_context_create($arrContextOptions));

重要注意:

用户承认禁用 SSL 验证的安全隐患。仅当用户完全了解风险并且没有其他可行的配置选项时才应执行此操作。为了获得最佳安全性,默认启用 SSL 证书验证。

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn