当前位置: 首页 > news >正文

php 亚马逊AWS-S3对象存储上传文件

最近做国外项目的时候,需要把文件上传到AWS-S3对象存储空间里,下面整理一下上传方法,和碰到的问题

代码

 /*** 亚马逊oss Aws上传* composer require aws/aws-sdk-php* @param $filePath* @param $ossPath* @return array* @author wzb* @data 2024/5/25*/
function ossAwsUploadFile($filePath = '', $ossPath = '')
{// 配置信息  composer require aws/aws-sdk-php$configOss = config('aws_oss');$accessKeyId = $configOss['accessKeyId'] ?? '';  // 你的AccessKeyId$accessKeySecret = $configOss['accessKeySecret'] ?? '';  // 你的AccessKeySecret$endpoint = $configOss['region'] ?? ''; // 你的Bucket所在地域的域名 ap-southeast-1$bucket = $configOss['bucket'] ?? ''; // 你的Bucket名字if (empty($accessKeyId) || empty($accessKeySecret) || empty($endpoint) || empty($bucket)) {return [];}$awsConfig = ['version' => 'latest',//版本'acl' => 'public-read',//权限//这个一定要加,是访问权限'bucket' => $bucket,//存储桶名称'region' => $endpoint,'key_id' => $accessKeyId,//Access key ID'access_key' => $accessKeySecret,//Secret access key];//实例化$s3 = new S3Client(['version' => $awsConfig['version'],//版本'region' => $awsConfig['region'],//区域'credentials' => new Credentials($awsConfig['key_id'],$awsConfig['access_key']),// 开启bug调试
//            'debug' => true]);if (!file_exists($filePath)) {return [];}try {$result = $s3->putObject(['Bucket' => $awsConfig['bucket'],'ACL' => $awsConfig['acl'],//这个一定要加,是访问权限'Key' => $ossPath,   // //亚马逊静态资源服务器上的路径+图片名称
//                'Body' => fopen($filePath, 'r'),'SourceFile' => $filePath,  // 原文件路径]);$result = $result->toArray();$imgUrl = $result['ObjectURL'] ?? '';return $result;} catch (Exception $exception) {echo $exception->getMessage();return [];}
}// 调用示例$ossInfo = ossAwsUploadFile("F:/wzb/img/5836923c44342.jpg", 'img/5836923c44342.jpg');

碰到的问题

一直报AWS HTTP error: cURL error 60: SSL certificate problem: unable to get local issuer certificate的问题:
下面详细报错信息:
PutObject" on “https://ss.amazonaws.com/img/5836923c44342.jpg”; AWS HTTP error: cURL error 60: SSL certificate problem: unable to get local issuer certificate (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://ss.amazonaws.com/img/5836923c44342.jpg

解决办法

php.ini里面的 curl.cainfo 需要设置

  1. 下载cacert: https://curl.haxx.se/ca/cacert.pem

  2. 配置php.ini 并重启

curl.cainfo = "真实路径/cacert.pem"
http://www.lryc.cn/news/352398.html

相关文章:

  • electron-01 基础及NPM相关配置
  • Foxit PDF Editor Pro福昕PDF编辑器Pro:重塑您的文档编辑体验
  • VUE 页面生命周期基本知识点
  • windows查看mysql的版本(三种方法)
  • Redis批量删除指定前缀的key
  • 机器学习实验------Adaboost算法
  • 点云处理中阶 Octree模块
  • Nginx实现负载均衡与故障检查自动切换
  • 2024年学浪视频怎么下载到手机相册
  • 【北京市政府网_注册安全分析报告】
  • 工作中的冲突,职场人士应如何化解
  • 企业级大数据平台建设方案
  • HTML语义化标签:为何它们如此重要?
  • 详细介绍一下Votenet的工作原理及流程
  • 使用Autofit.js和React实现自适应布局
  • Kafka之【存储消息】
  • 鸿蒙开发配置官方地图
  • 《天道》丁元英格律诗商业案例完整拆解(上)
  • 2024年山东省安全员C证证模拟考试题库及山东省安全员C证理论考试试题
  • 微软开源多模态大模型Phi-3-vision,微调实战来了
  • 架构二。。
  • 《Google 软件工程》读书笔记
  • 研发机构大数据迁移如何保障敏感数据不泄露
  • 【Spring Security系列】权限之旅:SpringSecurity小程序登录深度探索
  • ​​​【收录 Hello 算法】第 10 章 搜索
  • 【MySQL精通之路】SQL优化(1)-查询优化(11)-多范围查询优化
  • Mysql之基本架构
  • Python学习---基于正则表达式的简单爬取电影下载信息案例
  • .DS_store文件
  • 【webrtc】内置opus解码器的移植