麒麟在线

当前位置:网站首页 / 技术 / 正文

Debian 11 php提示error setting certificate verify locations: CAfile: /etc/pki/tls/certs/ca-bundle.crt

Debian 11 系统中,路径 /etc/pki/tls/certs/ca-bundle.crt 是红帽系列(CentOS/RHEL)的默认路径,而 Debian 使用的是不同的证书存放路径(/etc/ssl/certs/ca-certificates.crt)。你的 PHP 配置或编译进 cURL 的默认设置找错了地方,因此会提示找不到该文件

可以按照以下针对 Debian 11 的步骤解决:
1. 安装或更新 Debian 根证书包
确保系统中安装了标准的根证书软件包:
sudo apt update
sudo apt install --reinstall ca-certificates
2. 确认 Debian 中的正确证书文件路径
Debian 11 的标准证书文件位于 /etc/ssl/certs/ca-certificates.crt。你可以运行以下命令检查它是否存在:
ls -l /etc/ssl/certs/ca-certificates.crt
3. 修改 php.ini 指向正确的 Debian 路径
你需要修改 PHP 配置文件,纠正证书的指向:
  1. 运行 php --ini 找到你当前正在生效的 php.ini 文件路径。

  2. 打开 php.ini,搜索并修改 openssl.cafilecurl.cainfo

openssl.cafile = /etc/ssl/certs/ca-certificates.crt
curl.cainfo = /etc/ssl/certs/ca-certificates.crt
  1. 保存文件。

4. 重启 PHP-FPM / Web 服务
修改配置后,重启你的服务使其生效:
  • 如果使用 Nginx + PHP-FPM(常见配置):sudo systemctl restart php7.4-fpm(根据你的具体 PHP 版本号调整,如 php8.0-fpmphp8.1-fpm 等)

  • 如果使用 Apache:sudo systemctl restart apache2


兼容方案(推荐)(若部分旧代码仍强制读取旧路径)

如果你的一些扩展或第三方类库写死了去寻找 /etc/pki/tls/certs/ca-bundle.crt 路径,你可以通过建立软链接来完美兼容它,而无需改动代码:

sudo mkdir -p /etc/pki/tls/certs
sudo ln -s /etc/ssl/certs/ca-certificates.crt /etc/pki/tls/certs/ca-bundle.crt

做完这个软链接后,即使程序硬要找 ca-bundle.crt 也能直接映射到 Debian 的真实证书上。

推荐阅读

文章标签:

版权声明: 本文除特别说明外均由原创

本文链接: https://www.70ol.com/jishu/375.html,尊重共享,欢迎转载,请自觉添加本文链接,谢谢!

分享本文: 请填写您的分享代码。

呃 本文暂时没人评论 来添加一个吧

发表评论

必填

选填

选填

必填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。