file_get_contents():SSL 操作失败,代码为 1(证书验证失败)

2023-12-13

我已经安装了 WAMP 3.0.4,并尝试编写一个连接到外部 HTTPS Web 服务的 PHP 脚本。但这会返回错误:

警告:file_get_contents():SSL 操作失败,代码为 1。OpenSSL 错误消息:错误:14090086:SSL 例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败

我写了一个简短的脚本来演示这个问题:

<?php
$auth = base64_encode('username:password');

$aContext = array(
    'http' => array(
        'proxy' => 'tcp://proxyip:proxyport',
        'request_fulluri' => true,
        'header' => 'Proxy-Authorization: Basic $auth'
    ),
    'SSL' => array(
        'verify_peer' => false,
        'verify_peer_name' => false,
        'allow_self_signed' => true,
        'cafile' => 'C:/wamp/certificates/cacert.pem'
    )
);
$cxContext = stream_context_create($aContext);

$sFile = file_get_contents("https://www.google.com", False, $cxContext);

echo $sFile;
?>

要求使用代理服务器。

可以看出,我尝试安装根证书包并将 verify_peer 添加到 false (不是说我会在生产中这样做),但我仍然收到此错误。

从上面可以清楚地看出,我是一个Apache/WAMP新手。有人可以解释我所缺少的吗?


如果你想disable您可以使用的 SSL 连接验证:

'verify_peer' => false

在你的代码中:

<?php
$auth = base64_encode('username:password');

$aContext = array(
    'http' => array(
        'proxy' => 'tcp://proxyip:proxyport',
        'request_fulluri' => true,
        'header' => "Proxy-Authorization: Basic $auth"
    ),
    'ssl' => array(
        'verify_peer' => false,
    ),
);
$cxContext = stream_context_create($aContext);

$sFile = file_get_contents("https://www.google.com", False, $cxContext);

echo $sFile;
?>

但请注意,这意味着没有人可以保证您获得的数据是真实的(因为 ssl 证书未经验证)。

如果您想验证证书,您应该使用根证书然而,就像在你的问题中一样,你说你使用 WAMP,所以你的 cafile 的路径应该是这样的:

"cafile" => "c:/wamp/certificates/cacert.pem",

更重要的是——你什么也没说proxy在你的问题中。它是您需要的东西还是您在某处找到并只是想使用的东西?

如果您不需要代理,只需从您的请求中删除 if 即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

file_get_contents():SSL 操作失败,代码为 1(证书验证失败) 的相关文章

  • gmail 不断阻止 PHPmailer 登录

    我将在接下来的 8 小时内部署一个网站 而 Gmail 刚刚停止接受 PHPmailer 登录我的帐户 起初 它在测试过程中工作了几个小时 然后 它就停止工作了 我已经允许所有允许不太安全的应用程序从 gmail 登录 但它仍然不允许 ph
  • 通过 Ajax 加载内容时,WORDPRESS 音频播放器未加载,MediaElement.js 未应用

    我正在创建一个 WordPress 主题 当我使用 ajax 加载内容时 它不会将 MediaElements js 应用于我的音频播放器 因此不会显示音频 我认为这是因为 MediaElement js 加载了 wp footer 并且此
  • 使用 mod_proxy 进行反向代理,保留原始请求 URL

    我已经使用 mod proxy Apache2 配置了一个反向代理 监听 127 0 0 1 80 将所有请求代理到 127 0 0 1 8080 所以我配置了 mod proxy 如下所示 ProxyPreserveHost On Pro
  • 如何在响应ajax codeigniter后停止执行其他控制器

    我想知道如何在响应输出 json 数据后停止执行函数和涉及的其他控制器 就我这里的情况而言 我只是打电话test 函数于dashboard控制器 In dashboard构造函数将执行MY Login library In MY Login
  • 如何从父类函数访问子类中定义的常量?

    我从 php net 看到这个例子 但 c MY CONST 仅在 5 3
  • PHP严格标准:声明应该兼容

    我有以下类层次结构 class O Base class O extends O Base abstract class A Abstract public function save O Base obj class A extends
  • 从 smarty 访问 PHP 文件的变量(本地或全局)

    我有一个 php 文件 其中包含一些本地和全局变量 例如 foo 从此文件中调用 smarty 对象 如何在不更改 PHP 文件的情况下从 smarty 脚本访问 foo Thanks 如果你有一个名为 BASE 的常量变量 并且定义如下
  • Symfony2 Assetic 和 Less Sourcemaps

    我不确定如何破解 assetic less 过滤器以输出源映射文件 我这里指的是LessFilterhttps github com kriswallsmith assetic blob master src Assetic Filter
  • 使用 preg_replace 仅替换第一个匹配项

    我有一个结构类似于以下的字符串 aba aaa cba sbd dga gad aaa cbz 该字符串每次都可能有点不同 因为它来自外部源 我只想替换第一次出现的 aaa 但其他人则不然 是否可以 可选的第四个参数预替换 http php
  • 交换关联数组中的两个项目

    Example arr array apple gt sweet grapefruit gt bitter pear gt tasty banana gt yellow 我想调换一下柚子和梨的位置 这样数组就变成了 arr array ap
  • MySQL 追加字符串

    How can I append a string to the end of an existing table value Let s say I have the table below And let s say that Mari
  • PHP 与 MySQL 查询性能( if 、 函数 )

    我只看到这个artice http www onextrapixel com 2010 06 23 mysql has functions part 5 php vs mysql performance 我需要知道在这种情况下什么是最好的表
  • 通过 $_SESSION 从一个脚本发送到另一个脚本期间数据丢失

    我正在尝试将一个充满属性的对象从一个 PHP 发送到另一个 PHP SESSION object obj where obj是一个用 foreach 循环指定的对象 foreach array of objects as obj SESSI
  • Woocommerce 结账自定义选择字段

    我有以下功能 将选择列表添加到 woo commerce 结账表单中 woocommerce form field airport pickup array type gt select class gt array airport pic
  • Laravel 中只向登录用户显示按钮

    如果我以 John 身份登录 如何才能只显示 John 的红色按钮而不显示 Susan 的红色按钮 测试系统环境 Win10 Laravel5 4 Mysql5 7 19 table class table table responsive
  • ini_set 'session.gc_maxlifetime' 为 1 天

    If I do ini set session gc maxlifetime 86400 这是否意味着用户可以将浏览器留在同一页面 非活动状态 最多 1 天 而不必担心会话被垃圾收集并被注销 如果服务器配置不支持此功能会发生什么 它会给我一
  • 为什么 Composer 降级了我的包?

    php composer phar update这样做了 删除了 2 3 0 软件包并安装了整个 2 2 5 Zend Framework php composer phar update Loading composer reposito
  • Magento - 自定义支付模块

    这是一个非常普遍的问题 但这里是 我正在尝试在 Magento 中创建一个自定义支付模块 我创建了一个 常规 模块 可以连接到 Magento 事件 观察者模型 但是我如何告诉 Magento 将模块视为支付模块 以便它显示在管理后端和结账
  • 简单的 PHP 表单:电子邮件附件(代码 Golf)

    想象一下 一个用户想要在其网站上放置一个表单 该表单将允许网站访问者上传一个文件和一条简单的消息 该消息将立即通过电子邮件发送 即 该文件未存储在服务器上 或者如果该文件存储在服务器上 仅暂时 作为文件附件 并在邮件正文中添加注释 查看更多
  • 如何使用 PHPExcel 库从 Excel 获取日期

    我正在尝试使用 PHPExcel 从 Excel 获取日期 但我没有得到日期 我得到的字符串值不是 1970 以来的秒数 我尝试过的代码是 InvDate trim excel gt getActiveSheet gt getCell B

随机推荐

  • 以非 root 用户身份运行厨师客户端

    我想在我的 Linux 机器上以测试用户身份运行 Chef client 为此 我在 client rb 文件中添加了来自 etc chef client rb 的缓存路径 cache path chef cache 然后我从测试用户 非r
  • 如何使用 Laravel Sanctum 和 React 修复 401 Unauthorized 错误?

    我有以下设置 Laravel 与 Homestead 一起运行 Domain laravel api test指向我的 Homestead 环境 使用自定义主机在本地运行 React npx create react app app lar
  • 从顺序很重要的未排序的 2D 点数组中插值轨迹

    我需要一种从 Nx2 点数组获取 Lx2 轨迹的方法 即将这些点连接成单个轨迹的方法 例如 从 5x2 点数组创建 10000x2 点数组 我尝试过使用interp1 and interp2但要么我不完全理解他们 要么他们没有做我需要的事情
  • Pandas 重新索引以填充缺失的日期,还是更好的填充方法?

    我的数据是工厂的缺勤记录 有些日子没有缺勤 因此没有记录当天的数据或日期 然而 与所示的其他示例相比 这变得很棘手 在任何一天 都可能由于各种原因而出现多次缺勤 数据中的日期与记录的比率并不总是 1 1 我希望的结果是这样的 index S
  • iPhone 上的网络可达性

    也许有一个好方法来确定我是否有互联网连接 3G或无线网络 谢谢 以下是一个名为 Google 的新搜索引擎揭示的内容 iPhone SDK 测试网络可达性
  • 仅当匹配阈值字节时才填充映射中的字符串值

    我有一个tasks我正在迭代并将每个任务对象附加到的列表对象StringBuilder随后是新行 如下所示 现在 我将继续在同一字符串生成器中附加任务对象 直到其达到 60000 字节的大小限制 一旦达到限制 我将将此字符串填充为映射中的值
  • 使用 php 的简单水平条形图

    我见过一个 Facebook 应用程序 其中单击单选按钮会呈现一个图表 如下所示 我想知道是否有任何类似的图形库可以通过它在 php 中生成相同的图形 Thanks Pankaj 实际上 生成这种图非常简单 只需使用两个DIVs 一个是 1
  • 使用 PHP 将表单数据从一个网页传递到另一个网页

    我在这里发现了一些类似的问题 但从答案中我没有完全了解应该如何工作 我在页面中有一个订阅表格
  • 实施 30 天计时试验 [已关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 独立 Mac 开发者的问题 如何以非邪恶的方式实施 30 天计时赛 在首选项中放
  • 如何在JAVA中将两个int合并为一个double?

    如果我有 int a 123 int b 456 如何得到 double c 123 456 这个怎么样 int a 123 int b 456 double c Double parseDouble a b
  • 使用具有固定页眉和页脚的 css 可变内容 div 高度

    我在使用 CSS 时遇到了一些问题 正在向这个精彩的社区寻求帮助 我正在尝试构建一个包含以下元素的布局 1 标题区 2 页脚区域 3 左侧窗格 4 内容区 我提出了以下 CSS 但我不认为这是完成我需要的操作的最佳方式 请在下面找到我正在寻
  • 设计时编辑器支持控件集合

    我想向组件添加一个表示控件集合的属性 并有一个集合编辑器 通过它我可以轻松选择属于该集合的控件 VS确实almost我想要的自动使用以下代码 Private controls As New List Of Control
  • PHP 将 Excel 导出到特定路径?

    是否可以将 PHP MySQL Excel 工作表导出到指定路径 例如 U 盘 这是因为我使用 php 作为销售点 我现在想要的只是单击一个按钮 它将从 MySQL 数据库收集记录并将其作为 excel 或 csv 文件导出到 USB 闪存
  • 具有两个 Y 轴的分组箱线图

    我想使用 GGPLOT2 为同一类别制作两个具有不同信息的箱线图 具有两个 Y 轴 如下图所示 我有区域 AM 和 AR 的两个类别信息 旋转速度和角度 并且我想将这两种运动模式组合在根据区域分组的图形中 到目前为止我的代码如下所示 are
  • C#:0 和 1 排列

    我想列出仅包含 0 和 1 的排列 与二进制类似 但允许可变长度 不必等于 8 长度 例如 0 1 00 01 10 11 000 001 010 011 100 101 110 111 一直到满足X的长度为止 如何才能做到这一点 您还可以
  • “git Remote show origin”:为什么所有分支都显示“已跟踪”,即使有些分支没有?

    为什么 git remote show origin 将远程分支列为 已跟踪 即使这些分支没有链接到本地 分支进行拉 推 在这种情况下 跟踪 还有其他含义吗 我认为这就是 跟踪 的全部含义 关于分支跟踪的 git 文档 1 克隆一个具有多个
  • 如何保持 Google Chrome 扩展弹出窗口打开?

    如果我打开扩展程序弹出窗口 那么我会打开另一个窗口或选项卡 如果我返回弹出窗口 则弹出窗口不会保持打开状态 有没有办法强制它使弹出窗口保持打开状态 As a user 您目前无法强制弹出窗口保持打开状态 这是 UI 团队做出的 UI 决定
  • 使 my_average(a, b) 与定义了 f_add 和 d_div 的任何 a 和 b 一起使用。以及内置函数

    简而言之 我想要的是我编写的大多数数学函数 例如 my average a b 与任何a and b其中一个f add and f div已被定义 不过载 和 且不中断my average built in type built in ty
  • 根据组中唯一/不同值的数量创建二进制变量

    我有数据如下 userID lt c 1 1 1 2 2 2 3 3 3 product lt c a a a b b c a b c df lt data frame userID product 对于每个 userID 我想创建一个二进
  • file_get_contents():SSL 操作失败,代码为 1(证书验证失败)

    我已经安装了 WAMP 3 0 4 并尝试编写一个连接到外部 HTTPS Web 服务的 PHP 脚本 但这会返回错误 警告 file get contents SSL 操作失败 代码为 1 OpenSSL 错误消息 错误 14090086