当前位置: 首页 > news >正文

修复 Windows 上的 PHP HTTPS 证书颁发机构问题

在 Windows 上使用 PHP 发起 HTTPS 请求时,如果出现如下类似错误:

SSL certificate problem: unable to get local issuer certificate

在这里插入图片描述

这通常是因为 PHP 无法验证远程服务器的 HTTPS 证书,原因在于 缺少正确的 CA 根证书列表。下面是详细的修复步骤:


✅ 一键修复教程:为 Windows 上的 PHP 配置 CA 证书

第一步:下载 CA 根证书文件(cacert.pem
  1. 打开这个链接:https://curl.se/ca/cacert.pem
  2. 保存为文件(例如 cacert.pem),推荐保存到 PHP 安装目录下,例如:
C:\php\extras\ssl\cacert.pem

第二步:修改 php.ini 配置文件
  1. 找到你的 PHP 配置文件 php.ini,一般在 PHP 安装目录下。
  2. 打开并搜索以下两行配置:
;curl.cainfo =
;openssl.cafile =
  1. 修改为如下内容(取消注释并填写路径):
curl.cainfo = "C:\php\extras\ssl\cacert.pem"
openssl.cafile = "C:\php\extras\ssl\cacert.pem"

⚠️ 注意使用 绝对路径,且路径中的反斜杠使用 \\ 或用双引号包裹。


第三步:重启服务器(如 Apache/Nginx)

保存完 php.ini 后,记得重启 PHP 所使用的服务器:

  • 使用 Apache:重启 Apache 服务
  • 使用 Nginx:重启 PHP-FPM 或整个服务
  • 使用 CLI:重新运行命令即可生效

✅ 验证是否成功

你可以运行以下 PHP 脚本测试:

<?php
$response = file_get_contents("https://www.google.com");
echo $response ? "成功访问 Google!" : "访问失败!";

如果不再报错且能成功返回内容,则说明修复成功!


🔎 补充建议

  • 建议把 cacert.pem 放在 PHP 安装目录或明确的位置,并定期更新(证书列表每年更新)。
  • 如果你使用的是 WAMP、XAMPP 等套件,也可以把证书路径设置到其自带的 PHP 配置中。
  • curl.cainfo 主要用于 cURLopenssl.cafile 主要用于 file_get_contents()stream 等。

✅ 自动修复 PHP HTTPS 证书问题 - fix_php_ssl.bat

📦 使用方法:
  1. 复制以下内容,保存为 fix_php_ssl.bat
  2. 右键 → 以管理员身份运行
  3. 按提示输入 PHP 安装路径,它会帮你完成证书下载和 php.ini 修改

🧾 fix_php_ssl.bat 内容如下:
@echo off
setlocal enabledelayedexpansionecho ================================================
echo      PHP HTTPS 证书一键修复工具 - By ChatGPT
echo ================================================REM 获取 php.ini 路径
set /p PHP_PATH=请输入你的 PHP 安装目录(例如 C:\php): 
set INI_PATH=%PHP_PATH%\php.ini
set CACERT_DIR=%PHP_PATH%\extras\ssl
set CACERT_PATH=%CACERT_DIR%\cacert.pem
set CACERT_URL=https://curl.se/ca/cacert.pemREM 检查 php.ini 是否存在
if not exist "%INI_PATH%" (echo ❌ 错误:找不到 php.ini 文件:%INI_PATH%pauseexit /b
)REM 创建证书目录
if not exist "%CACERT_DIR%" (mkdir "%CACERT_DIR%"
)REM 下载 cacert.pem
echo 📥 正在下载 CA 根证书...
powershell -Command "Invoke-WebRequest '%CACERT_URL%' -OutFile '%CACERT_PATH%' -UseBasicParsing"
if exist "%CACERT_PATH%" (echo ✅ 下载成功:%CACERT_PATH%
) else (echo ❌ 下载失败,请检查网络连接。pauseexit /b
)REM 备份 php.ini
copy "%INI_PATH%" "%INI_PATH%.bak" > nul
echo 🗂 已备份 php.ini 到:%INI_PATH%.bakREM 修改 php.ini
echo 🛠 正在修改 php.ini...
set FOUND_CURL=0
set FOUND_OPENSSL=0
(for /f "usebackq delims=" %%a in ("%INI_PATH%") do (set "line=%%a"echo !line! | findstr /i "curl.cainfo" >nul && (echo curl.cainfo="%CACERT_PATH%"set FOUND_CURL=1) || echo !line! | findstr /i "openssl.cafile" >nul && (echo openssl.cafile="%CACERT_PATH%"set FOUND_OPENSSL=1) || echo !line!)if !FOUND_CURL! == 0 echo curl.cainfo="%CACERT_PATH%"if !FOUND_OPENSSL! == 0 echo openssl.cafile="%CACERT_PATH%"
) > "%INI_PATH%.tmp"move /y "%INI_PATH%.tmp" "%INI_PATH%" >nul
echo ✅ 修改完成!echo.
echo 🎉 已成功配置 CA 根证书!
echo 💡 请记得重启 Web 服务(如 Apache、Nginx 或 PHP-FPM)
pause

💡 小贴士
  • 你只需告诉它 PHP 安装目录(如 C:\php),它会自动识别 php.ini,下载证书并写入配置。
  • 如果你用的是 WAMP/XAMPP,把目录换成它们的 PHP 目录一样可以用。
  • 会自动备份原 php.iniphp.ini.bak
http://www.dtcms.com/a/458738.html

相关文章:

  • 长春网站建设电话咨询网页制作与设计类课程
  • 怎么将网站权重提上去网站的后台管理
  • 网站 内容劳务公司
  • 河南省教育类网站前置审批WordPress动画随音乐变化
  • 网站页头设计国外医院网站设计
  • 网站建设:成都今网科技设计师培训感悟
  • 南方科技大学网站建设做视频网站服务器怎么选择
  • Python 字符串与布尔值详解
  • 用vs做购物网站dw网页编辑器
  • 有什么网站专做买生活污水设备湖北手机网站制作
  • 电工培训青岛谁优化网站做的好
  • 无需下载国外黄冈网站推广建筑人才招聘信息网
  • 2025年--Lc175--H671.二叉树中第二小的节点(遍历二叉树)--Java版
  • 网站多个域名备案融资平台公司定义
  • 电子商务网站建设花费骆驼有没有做网站的公司
  • 查询网站有没有备案做网站 视频
  • js做网站统计如何维护网站的运营
  • 长沙做网站开发价格简述网站设计规划的步骤
  • 神级网页设计网站wordpress表结构怎么样
  • wordpress 图集哈尔滨网站建设优化公司
  • 密码入门笔记习题1:希尔密码求密钥
  • 做服装行业网站怎么每天更新内容重庆易企云网络科技有限公司
  • 设计感十足的网站沈阳中讯国际网站建设
  • QML学习笔记(二十五)QML的anchors(锚点)
  • 网站建设优化推广哈尔滨自己做的网站不显示图片
  • 水利建设工程网站wordpress my vistors
  • 网站建设 策划网络营销策划方案目的
  • 织梦网站自助申请友链代码全网推广网站
  • LockSupport.park 与 Object.wait 的方法的区别?
  • 广东建设信息公开网站中学网站管理系统下载