本地Laravel应用配置AWS S3上传文件时遇SSL证书错误求助
解决Laravel本地连接AWS S3时的SSL证书错误(cURL 60)
嘿,这个SSL证书问题我之前在本地跑Laravel连S3的时候也踩过坑,给你几个实用的解决办法,按优先级来:
方法1:更新本地PHP的CA证书(推荐,适合长期本地开发)
这个是最根本的解决方式,错误本质是本地cURL无法验证S3服务器的SSL证书,核心原因是本地缺少可信的根CA证书:
- 下载最新的根CA证书集合(从官方可信渠道获取,保存为
cacert.pem文件) - 找到你本地PHP的
php.ini配置文件(可以通过终端执行php --ini命令定位路径) - 在
php.ini里找到并修改以下两个配置项,指向你刚才保存的cacert.pem的绝对路径:
curl.cainfo = "/path/to/your/cacert.pem" openssl.cafile = "/path/to/your/cacert.pem"
- 重启你的本地服务器(比如XAMPP、WAMP、Laravel Valet等),然后重新测试上传。
方法2:本地开发临时禁用SSL验证(仅测试用,禁止生产环境使用)
如果只是临时测试不想折腾证书配置,可以临时关闭SSL验证,但注意:这个方法只适合本地开发测试,生产环境绝对不能启用,会带来严重的安全风险!
- 打开Laravel项目的
config/filesystems.php文件,找到s3磁盘的配置数组,添加http配置项:
's3' => [ 'driver' => 's3', 'key' => env('AWS_ACCESS_KEY_ID'), 'secret' => env('AWS_SECRET_ACCESS_KEY'), 'region' => env('AWS_DEFAULT_REGION'), 'bucket' => env('AWS_BUCKET'), 'url' => env('AWS_URL'), 'http' => [ 'verify' => false, ], ],
- 执行命令清除配置缓存:
php artisan config:clear - 重新测试上传功能。
方法3:检查并升级本地PHP和cURL版本
有些旧版本的PHP或cURL对AWS S3的新SSL证书支持不佳,如果你用的是比较老的本地环境,可以尝试升级到PHP 7.4+(或稳定的最新版本),同时确保cURL版本是最新的稳定版。
额外小建议
你的上传代码可以优化一下,不用先创建本地文件再上传,直接传内容更高效:
$data = 'Test data to see if this works!'; $storagePath = Storage::disk('s3')->put("uploads/file.txt", $data, 'public');
内容的提问来源于stack exchange,提问作者Charl van Staden
相关产品推荐
相关产品推荐

