1、安装aws sdk,可以参考官方文档的安装文档
安装composer
如果 Composer 未在您的项目中,请下载并安装 Composer。
对于 Windows,请下载并运行 Composer-Setup.exe。
对于 Linux,请遵循“Download Composer (下载 Composer)”页面上的命令行安装。
因为我本地的环境是phpstudy,使用的php框架是tp5.0,所以只需要直接执行更新脚本,下载aws-sdk-php
2、上传对象到桶
function awsUploadFile($keyName,$filepath){
set_time_limit(0);
$awsConfig = array(
'version'=>'latest',//版本
'acl'=>'public-read',//权限
'bucket'=>'bucket',//桶块
'region'=>'ap-east-1',//区域 和 亚马逊资源服务器创建的桶块区域一致
'key_id'=>"xxxxxxxxxx",//Access key ID
'access_key'=>"xxxxxxxx",//Secret access key
);
if(empty($awsConfig)){
echo "aws配置缺失";exit;
}
//实例化证书
$credentials = new Aws\Credentials\Credentials($awsConfig['key_id'],
$awsConfig['access_key']);
$s3 = new Aws\S3\S3Client([
'version' => $awsConfig['version'],//版本
'region' => $awsConfig['region'],//区域
'credentials'=>$credentials,//证书
]);
$config = [
'Bucket' => $awsConfig['bucket'],
'Key' => $keyName,//亚马逊静态资源服务器上的路径
'SourceFile' => $filepath,//原文件路径
'ACL'=>$awsConfig['acl'],//权限
];
try {
$result = $s3->putObject($config);
} catch (Exception $exception) {
echo "Failed to upload $filepath with error: " . $exception->getMessage();
exit("Please fix error with file upload before continuing.");
}
//删除上传到服务的原文件
unlink($filepath);
return $result;
}
3、在开发中遇到的问题
1、一开始使用的使用环境变量凭证,可以参考;发现在windows 10 系统下,一直没有获取到对应的文件,没走通,主要原因还是在于没有将所有的文档阅读完,就开始动手写代码了,导致浪费了时间;最后使用的是凭证提供程序,如下图
2、由于本地上传的缘故,出现了cURL error 60报错
错误提示:
AWS HTTP error: cURL error 60: (see https://curl.haxx.se/libcurl/c/libcurl-errors.html)
具体的解决方案步骤
1)从 https://curl.haxx.se/ca/cacert.pem 下载最新的cacert.pem
2)将以下行添加到php.ini(如果这是共享托管和您没有访问php.ini然后你可以添加到.user.ini在public_html) curl.cainfo=/path/to/downloaded/cacert.pem 可以参考文档 https://blog.csdn.net/qq_35255775/article/details/81020668