使用PHP上传到Amazon S3

Sea*_*ean 6 php upload amazon-s3 amazon-web-services

我花了最后几个小时的教程来实现使用php实现文件上传到Amazon S3.我将最新版本的DonovanSchönknecht的S3类上传到我的服务器(作为S3.php),我正在尝试使用以下代码来测试上传功能.我知道这段代码会起作用,因为我已经看到了许多实例.

<?php

require('S3.php');

$s3 = new S3('KEY', 'SECRET KEY');

//insert into s3
$new_name = time() . '.txt';

S3::putObject(
'upload-me.txt',
'bucketName',
$new_name,
S3::ACL_PUBLIC_READ,
array(),
array(),
S3::STORAGE_CLASS_RRS

);

?>
Run Code Online (Sandbox Code Playgroud)

我尝试加载此页面时收到错误500服务器错误.此外,这种性质的所有其他声誉良好的教程给了我相同的错误500.

我通过使用Cyber​​duck连接到S3来验证我的密钥和密钥是否有效.

有没有人知道我可能做错了什么?

谢谢,

肖恩

Sea*_*ean 10

事实证明,我错过了PHP的cURL扩展,这导致了一个问题,因为我使用的S3类需要使用cURL.现在一切正常.


Jer*_*lom 9

您还应该考虑使用官方AWS SDK for PHP.可以在S3用户指南中找到将S3与SDK一起使用的示例.

  • [每个版本](https://github.com/aws/aws-sdk-php/releases)中都包含一个zip和phar,其中包含整个闭包依赖项,因此不需要Composer. (6认同)

小智 8

您可以通过运行以下composer命令下载最新版本的Amazon PHP SDK

composer require aws/aws-sdk-php
Run Code Online (Sandbox Code Playgroud)

以下是在Amazon s3上上传文件的进一步配置

// Include the SDK using the Composer autoloader
require 'vendor/autoload.php';
use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;

// Set Amazon s3 credentials
$client = S3Client::factory(
  array(
    'key'    => "your-key",
    'secret' => "your secret key"
  )
);

try {
  $client->putObject(array(
    'Bucket'=>'your-bucket-name',
    'Key' =>  'your-filepath-in-bucket',
    'SourceFile' => 'source-filename-with-path',
    'StorageClass' => 'REDUCED_REDUNDANCY'
  ));

} catch (S3Exception $e) {
  // Catch an S3 specific exception.
  echo $e->getMessage();
}
Run Code Online (Sandbox Code Playgroud)

从此处获取分步详细信息使用PHP进行Amazon S3文件上载