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 配置文件,纠正证书的指向:运行
php --ini找到你当前正在生效的php.ini文件路径。打开
php.ini,搜索并修改openssl.cafile和curl.cainfo
openssl.cafile = /etc/ssl/certs/ca-certificates.crt curl.cainfo = /etc/ssl/certs/ca-certificates.crt
保存文件。
4. 重启 PHP-FPM / Web 服务修改配置后,重启你的服务使其生效:如果使用 Nginx + PHP-FPM(常见配置):
sudo systemctl restart php7.4-fpm(根据你的具体 PHP 版本号调整,如php8.0-fpm、php8.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 的真实证书上。推荐阅读
- 上一篇: Debian禁止自动挂起
- 下一篇:
文章标签:
版权声明: 本文除特别说明外均由 麒麟在线 原创
本文链接: https://www.70ol.com/jishu/375.html,尊重共享,欢迎转载,请自觉添加本文链接,谢谢!
分享本文: 请填写您的分享代码。
呃 本文暂时没人评论 来添加一个吧
发表评论