Ubuntu16.04 PHP7.4/Apache2运行WordPress报cURL错误60 SSL证书问题求助
问题排查与解决步骤
确认配置生效的实际路径
修改php.ini后重启依然不生效,90%的概率是改错了配置文件:
- 不要直接修改CLI模式下的php.ini,必须确认Apache实际加载的php.ini位置:新建临时文件
info.php写入<?php phpinfo(); ?>,通过浏览器访问该文件,找到Loaded Configuration File字段对应的路径,这个路径下的php.ini才是Apache运行时真正读取的配置文件 - 在phpinfo输出中查找
curl.cainfo、openssl.cafile字段的实际值,确认之前添加的配置是不是真的被Apache加载,而不是仅在CLI命令行环境下生效 - 验证完成后及时删除该临时php文件,避免服务器信息泄露
确认证书文件的可读性与正确性
- 核对php.ini中填写的证书路径是真实绝对路径,不要残留教程里的
/path/to/cacert.pem这类占位符文本 - 检查cacert.pem的文件权限:Ubuntu下Apache运行用户为www-data,需要保证www-data对该证书文件有读权限,可执行
chmod 644 /实际证书路径/cacert.pem调整权限;证书文件不要存放在普通用户家目录下,默认的家目录权限拦截会导致www-data无法读取文件,建议将证书移动到系统公共证书目录/etc/ssl/certs/下 - 移动完成后执行
c_rehash /etc/ssl/certs/重新生成系统证书哈希,让系统所有依赖OpenSSL的组件都能识别最新的证书列表,不局限于PHP的单独配置
检查站点本身的证书链配置
你使用的是Geotrust SHA256证书,很多时候cURL 60报错并非PHP配置问题,而是站点自身的HTTPS证书链不全:
- 检查Apache站点配置中
SSLCertificateFile对应的证书文件,是否按顺序拼接了域名证书、Geotrust中间证书、根证书,只单独上传域名证书就会导致本地校验时找不到颁发者,触发报错 - Ubuntu Server 16.04已停止官方维护,系统自带的ca-certificates包版本过旧,本身就无法识别当前主流CA的根证书,就算不依赖PHP单独配置,更新系统级证书库也能从根源解决大部分校验问题
排除WordPress层的配置干扰
如果以上步骤配置完成后依然报错:
- 在测试页面执行原生cURL请求测试HTTPS连通性,如果原生请求正常,说明是WordPress核心或插件修改了cURL请求参数,覆写了全局的SSL校验配置,可逐个禁用插件定位问题源
- 不要长期使用关闭SSL校验的方案(比如设置
CURLOPT_SSL_VERIFYPEER = false),这类方案会绕过安全校验,存在数据泄露风险,仅可作为临时连通性测试手段
内容的提问来源于stack exchange,提问作者Patdundee
相关产品推荐
相关产品推荐

