file_get_contents:无法设置本地证书链文件

2024-04-22

我们使用 Composer 来升级 Satis 的依赖项。最近的服务器升级后,我们无法这样做。缩小可能的原因后,我们发现 file_get_contents php 函数在尝试建立 ssl 连接时失败。

我们使用以下脚本来测试我们的 ssl:

<?php
$url = 'https://satis.work.com/packages.json';
$contextOptions = [
    'ssl' => [
        'verify_peer'      => false,
        'verify_peer_name' => false,
        'local_cert'       => '/home/work/.ssl/deployer.pem',
    ]
];
$sslContext = stream_context_create($contextOptions);
$result = file_get_contents($url, false, $sslContext);
echo $result, "\n"; 

这是抛出的:

PHP 警告:file_get_contents():无法设置本地证书链文件“/home/work/.ssl/deployer.pem”;检查您的 cafile/capath 设置是否包含您的证书及其颁发者的详细信息,位于 /home/omlook/test-ssl.php 第 12 行 PHP 警告:file_get_contents():无法在第 12 行 /home/work/test-ssl.php 中启用加密 PHP 警告:file_get_contents(https://satis.work.com/packages.json https://satis.work.com/packages.json): 无法打开流:第 12 行 /home/work/test-ssl.php 中的操作失败

这绝对不是权限或文件所有权的问题,脚本可以很好地读取 .pem。令人困惑的是,这是如何exact相同的脚本和 .pem 密钥在我的本地环境中工作得很好,并且版本差异似乎并不那么显着。

当地环境:

PHP 7.0.18-0ubuntu0.16.04.1(cli)(NTS) 版权所有 (c) 1997-2017 PHP 集团 Zend Engine v3.0.0,版权所有 (c) 1998-2017 Zend Technologies 使用 Zend OPcache v7.0.18-0ubuntu0.16.04.1,版权所有 (c) 1999-2017,作者:Zend Technologies

OpenSSL 1.0.2g 2016 年 3 月 1 日

Server:

PHP 7.1.7-1+ubuntu14.04.1+deb.sury.org+1 (cli)(构建时间:2017 年 7 月 7 日 10:07:42)( NTS ) 版权所有 (c) 1997-2017 PHP 集团 Zend Engine v3.1.0,版权所有 (c) 1998-2017 Zend Technologies 使用 Zend OPcache v7.1.7-1+ubuntu14.04.1+deb.sury.org+1,版权所有 (c) 1999-2017,Zend Technologies

OpenSSL 1.1.0f 2017 年 5 月 25 日


仅当您在 PEM 文件中的“BEGIN CERTIFICATE”部分之前省略明文元数据(颁发者、有效性等)时,才会发生这种情况。对于较新版本的 PHP(包括 7.0),这部分现在似乎是强制性的。到目前为止我还没有找到更多信息,但我的猜测是,这是一个 openssl 问题。 更新证书,包括 openssl 生成的元数据部分,解决了我的问题。

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

file_get_contents:无法设置本地证书链文件 的相关文章

  • Cakephp - CSRF 令牌不匹配

    我在 Cakephp 3 6 中有一个项目 其中 MessageController 中的 3 个操作由 Ajax 调用 但是 我有一个问题 当我向其中一个操作发送请求时 XHR 会向我返回以下内容 message CSRF token m
  • MATLAB 可执行文件太慢

    我使用以下命令将 MATLAB 程序转换为基于控制台的应用程序deploytool在 MATLAB 中 MATLAB m文件执行大约需要 2 秒 但在我将其转换为可执行文件并调用 exe 执行需要45秒 太长了 我想将 MATLAB 程序与
  • 解析错误:语法错误,意外的“”(T_ENCAPSED_AND_WHITESPACE)[重复]

    这个问题在这里已经有答案了 完整错误 解析错误 语法错误 意外的 T ENCAPSED AND WHITESPACE 需要标识符 T STRING 或 变量 T VARIABLE 或数字 T NUM STRING 它说错误出现在第 12 行
  • 创建动态子域

    自从我考虑一些网站正在实施的此功能以来已经有一段时间了 它看起来非常成功 类似的网站tumblr com blogger com wordpress com允许用户使用简单的 HTML PHP 表单从网站内注册新的子域名 以我目前对 PHP
  • Stripe API - 代理后面的 PHP Curl 请求

    我正在尝试使用 php 和curl 在代理后面向 stripe api 发出请求 如果我不在代理后面 则以下内容有效 ch curl init curl setopt ch CURLOPT URL https api stripe com
  • $_COOKIE[] 设置后似乎没有反映更改

    我不记得过去使用 Cookie 时遇到过很多问题 但我在尝试时遇到了一些意想不到的结果 我在本地主机上运行 因此我的域设置 这将产生以下输出 Cookie Set Cookie equals 457718770 shou
  • php 验证整数[重复]

    这个问题在这里已经有答案了 我想知道为什么这不起作用 echo gettype GET id returns string if is int GET id echo Integer 如何验证从 GET POST 传递的数据是否为整数 Ca
  • 如何动态创建新属性

    如何从对象方法内的给定参数创建属性 class Foo public function createProperty var name val here how can I create a property named var name
  • 安全性:我应该将供应商目录和composer.json移到文档根目录之外吗?

    刚刚开始与作曲家合作 用作曲家将一些东西安装到我的
  • 如何重定向(标头位置)到 html 文件?

    所以我正在 php 中运行一个注册 登录系统 包括 MySQL 出于测试目的 成功登录后 我将用户重定向到 index php 该文件声明用户已登录 并为他提供注销选项 同时 我制作了一个计划使用的实际 html 页面 因此我只是添加了 i
  • htaccess隐藏php扩展时出错,只隐藏html

    我在使用 htaccess 隐藏网站上的 php 扩展时遇到问题 我看到很多网站试图修复它 但没有任何结果 但只有 html 扩展名对我来说是隐藏的 在我的 htaccess 上 我用这个来隐藏扩展 它就在错误页面之后 这是我的 htacc
  • 致命错误:调用未定义的方法 mysqli_stmt::query()

    为什么我会收到以下错误 致命错误 调用未定义的方法 mysqli stmt query mysqli new mysqli localhost or die mysqli gt connect error function checklog
  • PHP 论坛软件可以轻松与现有网站集成吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有一个现有的 php 网站 已经设置了用户系统 注册 身份验证 丢失密码等 我决定添加一个留言板并将其与现有网站集成 在一个网站上注册应
  • 根据客户端发送 HTML 或 JSON 响应

    我有一个带有 Eloquent 实体及其各自的 Laravel 应用程序RESTful 资源控制器 http laravel com docs 5 0 controllers restful resource controllers 如下所
  • Elastic Beanstalk 添加多个 ssl 证书

    我有一个 Docker Django api 应用程序 可以从多个域 abc xyx com 或 def lmn com 调用 我已从 Elastic beanstalk 中的配置控制台成功添加了 abc xyz com 的 ssl 证书
  • 通过另一个二维数组中的行过滤二维数组的行

    我有两个数组 我正在使用array diff assoc 以获得差异 但它总是返回common set结果中的行 它应该返回new q sets排 我的方法有什么问题吗 样本数据 array1 12 gt new q sets 11 gt
  • PHP上传问题

    我使用了一些脚本来开始在我的开发计算机上上传文件 问题是 尽管此操作预期很容易 但每当我尝试上传图像时 Apache 似乎都会超时 上传设置为On和tmp目录设置在php ini 我尝试上传主要内容gif来自谷歌 一个8 36KB图像 它应
  • 从数据库中给定时间起经过的时间

    我有一个 HTML 表 其中包含从数据库中提取的记录 我正在使用 PHP MySQL 我的表中名为 Timer 的列未从数据库中检索 我需要在此处显示经过的时间 从数据库中的特定时间开始 例如 假设现在的时间是2013年2月21日下午6点2
  • PHP + FTP删除文件夹中的文件

    我刚刚编写了一个 PHP 脚本 它应该连接到 FTP 并删除特殊文件夹中的所有文件 它看起来像这样 但我不知道需要什么命令来删除文件夹日志中的所有文件 任何想法
  • PHP 内置函数复杂性(isAnagramOfPalindrome 函数)

    我在过去的两个小时里一直在谷歌搜索 但找不到 php 内置函数时间和空间复杂度的列表 我有回文字谜 https stackoverflow com questions 4628386 what is the best algorithm t

随机推荐

  • 在 HDP 2.2 上运行 Spark Streaming 作业时出现 NoSuchMethodError

    我正在尝试在 HDP 2 2 Sandbox 上运行简单的流作业 但面临 java lang NoSuchMethodError 错误 我可以在这台机器上运行 SparkPi 示例 没有任何问题 以下是我正在使用的版本
  • 不使用 Numpy 的矩阵求逆

    我想在不使用的情况下反转矩阵numpy linalg inv 原因是我使用 Numba 来加速代码 但不支持 numpy linalg inv 所以我想知道是否可以使用 经典 Python 代码反转矩阵 With numpy linalg
  • Array.sort() 在 Firefox 和 Chrome/Edge 中的行为不同[重复]

    这个问题在这里已经有答案了 我有这段极其简化的代码 它在 Firefox 中产生的结果与您在 Chrome 或 Edge 中获得 和期望 的结果相反 尚未尝试过其他浏览器 1 2 3 4 5 sort a b gt 1 forEach a
  • 错误:(26, 13) 无法解析:com.android.support:appcompat-v7:25.0.1

    错误 26 13 无法解析 com android support appcompat v7 25 0 1错误 23 24 无法解析 com android support test espresso espresso core 2 0 这
  • grid.arrange 错误:输入必须是 grobs

    我有以下 R 脚本 library ggplot2 library gridExtra Sys setenv LANG en c1 lt ggplot mtcars aes factor cyl geom bar c2 lt ggplot
  • SwiftUI:如何在没有 AppDelegate 的情况下强制横向

    我正在制作带有视频播放器的应用程序 除了这个视频播放器之外 我的整个结构仅用于纵向视图 我想仅为该视图启用横向旋转 但我查过很多论坛 每个答案都是向 App Delegate 添加一些代码 但我没有 那我能做什么呢 这是给您的演示 您可以通
  • 复杂的 Linq 查询未按预期工作

    我想合并 4 个表的结果并使用 LINQ 选择特定字段 请耐心等待 因为我没有做过复杂的 LINQ 查询 表 1 订阅者 表 2 订阅 表 3 状态 表 4 国家 地区 注意 订阅者可以有 0 个 1 个或多个订阅 这意味着外键 Subsc
  • 如何使用 Apollo 后端在 TypeScript Angular 应用程序中输入部分类型?

    编辑 我正在寻找来自 Graphql Angular 社区的权威和来源答案 以提供最佳实践示例 例如 我们在 TypeScript 中定义了一个 Person 类型 interface Person firstName string las
  • 从 WordPress 主题创建 Octopress 主题

    我已经使用 wordpress 一段时间了 想尝试一些不同的东西 进入我对静态网站生成世界的发现 现在我关注的是 Octopress 我知道它是基于 jekyll 构建的 在我开始接触 ruby 之前 我想知道是否有可能翻译我的curren
  • 并排启动两个资源管理器窗口

    有没有办法使用批处理脚本并排 垂直平铺 启动两个资源管理器窗口 如果没有 我该如何使用 VBS 来做到这一点 我已经修改了上面的VBS脚本Hackoo完全按照OP的要求去做 脚本中的注释准确地解释了它将做什么 如果两个窗口未设置到正确位置
  • 动态文件下载,无需在服务器中保存文件

    我正在使用 Apache POI 库对多个 excel 文件执行一些操作 我正在尝试下载 Excel 报告而不将其存储在服务器中的某个位置 我正在使用 Struts 2 它需要将文件输入到InputStream而 POI 工作簿需要Outp
  • Android“Hello World”教程程序。错误:[解析错误] 解析包时出现问题

    今天我决定开始为 Android 操作系统进行开发 我访问了他们的网站 下载了所有必需的软件 Eclipse Android SDK Eclipse 的 ADT 插件等 我按照提供的 Hello World 教程进行操作 链接文本 http
  • 使用媒体查询调整图像大小

    好的 我正在使用 bootstrap 3 和 Quicksand js 制作一个可过滤的投资组合 我正在使用流沙来过滤投资组合 现在 当我的图像设置宽度和高度时 我的工作正常 但是当我将宽度和高度更改为 100 时 排序很奇怪 图像在排序时
  • 如何在plotly中绘制饼图?

    如何在 fig 中绘制 pie1 子图 使其位于 第一个 位置 我就是这样做的 但没有成功 import pandas as pd import numpy as np import seaborn as sns import plotly
  • 如何将命名管道字符串从非托管代码空间发送到托管代码空间?

    我似乎遇到了命名管道 101 问题 我有一个非常简单的设置来连接从 C 非托管应用程序传输到 C 托管应用程序的单工命名管道 管道已连接 但我无法通过管道发送 消息 除非我关闭似乎刷新缓冲区并传递消息的句柄 就好像消息被屏蔽了一样 我尝试颠
  • 发生未处理的异常:开发服务器仅支持每个构建本地化单个区域设置

    请告知如何修复此错误 我正在尝试实现本地化 但遇到了此问题 我使用的指南 https angular io guide i18n merge translations into the app https angular io guide
  • Django 调试工具栏仅适用于管理部分

    嘿 我已经使用 Django 1 2 1 一段时间了 前几天遇到了 Django 调试工具栏 它看起来真的很有用 我真的很想尝试一些东西 我完全按照自述文件所说的安装了 一步步 我将中间件放在最后 以防万一出现问题 但我使用的是相当标准的中
  • 使用递归对数字求和

    我刚刚研究了递归的概念 我想尝试一个简单的例子 在下面的代码中 我尝试获取数字 1 2 3 4 5 并使用递归将它们加在一起 我预计结果是 15 但我的代码返回 16 我究竟做错了什么 Code static void Main strin
  • Terraform 13,根据另一个变量的值验证变量

    有没有办法实现以下逻辑 variable environment description The environment this will be run in can only be set to preprod test prod ty
  • file_get_contents:无法设置本地证书链文件

    我们使用 Composer 来升级 Satis 的依赖项 最近的服务器升级后 我们无法这样做 缩小可能的原因后 我们发现 file get contents php 函数在尝试建立 ssl 连接时失败 我们使用以下脚本来测试我们的 ssl