上传图片到Cloudinary时提示cURL error 60该如何解决?
Cloudinary Laravel扩展包cURL error 60解决方案
这个错误是Guzzle HTTP客户端未正确读取根证书配置导致的,即使php.ini中已经配置cacert.pem,Laravel的服务扩展包也会优先读取自身的客户端配置,Windows开发环境下该问题出现概率更高,可按以下方案修复:
生产环境可用方案(推荐)
- 先确认你使用的cacert.pem为最新版本,在Laravel项目的
storage目录下新建cert文件夹,将cacert.pem放入该文件夹中 - 优先尝试修改项目根目录的
.env配置文件,添加如下配置:
CLOUDINARY_CURL_OPTIONS={"verify": "storage/cert/cacert.pem"} # Windows环境可写绝对路径,示例: # CLOUDINARY_CURL_OPTIONS={"verify": "F:\\open-source-projects\\soora\\storage\\cert\\cacert.pem"}
- 若上述配置不生效,可直接修改配置文件
config/filesystems.php,在disks数组中新增cloudinary磁盘配置:
'disks' => [ // 其他原有磁盘配置 'cloudinary' => [ 'driver' => 'cloudinary', 'curl' => [ CURLOPT_SSL_VERIFYPEER => true, CURLOPT_CAINFO => storage_path('cert/cacert.pem'), ], ], ]
本地开发临时方案(禁止用于生产环境)
如果仅本地测试需要快速解决问题,可临时关闭SSL验证,在.env中添加如下配置即可:
CLOUDINARY_CURL_OPTIONS={"verify": false}
生效验证
修改配置后执行php artisan config:clear清空Laravel配置缓存,再重新测试上传功能即可。
如果仍报错,可检查当前运行Laravel使用的PHP版本是否和你修改php.ini的版本一致,多版本PHP环境下很容易出现配置错版本的问题。
内容的提问来源于stack exchange,提问作者Mahdi
相关产品推荐
相关产品推荐

