php -i | grep 'curl' 这段输出了一大段内容,但是curl.cainfo => no value => no value
时间: 2025-09-04 13:11:53 AIGC 浏览: 10
你的问题非常好,说明你已经进入到了 PHP 的配置排查阶段。
你运行了:
```bash
php -i | grep 'curl'
```
输出中看到:
```
curl.cainfo => no value => no value
```
这说明 PHP 的 `curl` 扩展虽然启用了,但没有配置 `curl.cainfo`,这个配置项用于指定 **CA 证书路径**,在使用 `curl_setopt($ch, CURLOPT_CAINFO, ...)` 时会用到。
---
## ✅ 理解 `curl.cainfo`
### 它是什么?
`curl.cainfo` 是 PHP 的 `php.ini` 中的一个配置项,用于指定:
> 当 PHP 使用 `cURL` 发起 HTTPS 请求时,使用的 **CA 证书路径**。
它等价于你在 PHP 代码中使用:
```php
curl_setopt($ch, CURLOPT_CAINFO, '/path/to/cacert.pem');
```
如果你没有设置这个值,PHP 默认会尝试使用系统默认的 CA 证书(通常是 `/etc/pki/tls/certs/ca-bundle.crt` 或 `/etc/ssl/certs/ca-certificates.crt`)。
---
## ❓ 为什么显示 `no value => no value`?
这表示:
- `php.ini` 中没有设置 `curl.cainfo`
- 或者你设置了但没生效(配置文件路径不对 / 没有加载正确的 `php.ini`)
---
## ✅ 如何设置 `curl.cainfo`?
### 步骤 1:下载 CA 证书文件(cacert.pem)
你可以从 [https://curl.se/ca/cacert.pem](https://curl.se/ca/cacert.pem) 下载最新的 CA 证书文件。
例如:
```bash
cd /usr/local/ssl
wget https://curl.se/ca/cacert.pem
```
### 步骤 2:编辑 `php.ini` 文件
找到你的 `php.ini` 文件路径:
```bash
php --ini | grep "Loaded Configuration File"
```
输出示例:
```
Loaded Configuration File: /opt/cpanel/ea-php81/root/etc/php.ini
```
然后编辑它:
```bash
nano /opt/cpanel/ea-php81/root/etc/php.ini
```
添加或修改以下行:
```ini
[curl]
curl.cainfo = "/usr/local/ssl/cacert.pem"
```
### 步骤 3:重启 PHP 或 Apache
```bash
/scripts/restartsrv_apache
```
或者如果你使用的是 PHP-FPM:
```bash
/scripts/restartsrv_php_fpm
```
---
## ✅ 验证是否生效
再次运行:
```bash
php -i | grep 'curl.cainfo'
```
你应该看到:
```
curl.cainfo => /usr/local/ssl/cacert.pem => /usr/local/ssl/cacert.pem
```
或者访问你的 `phpinfo.php` 页面,搜索 `curl.cainfo`,也能看到配置生效。
---
## ✅ 为什么需要设置这个?
当你使用 PHP 的 `curl` 发起 HTTPS 请求(如访问外部 API、WordPress 更新插件、访问 PayPal、Stripe 等接口)时,如果服务器没有正确配置 SSL CA 证书,可能会出现如下错误:
```
SSL certificate problem: unable to get local issuer certificate
```
设置 `curl.cainfo` 可以解决这类问题。
---
## ✅ 总结
| 配置项 | 默认值 | 说明 |
|--------|--------|------|
| `curl.cainfo` | 未设置 | 指定 PHP cURL 使用的 CA 证书路径 |
| 推荐值 | `/usr/local/ssl/cacert.pem` | 可从 curl 官网下载 |
| 验证命令 | `php -i | grep curl.cainfo` | 查看是否设置成功 |
---
##
阅读全文
相关推荐

















