7

ここ数時間、php を使用して Amazon S3 へのファイルのアップロードを実装するためのチュートリアルに従ってきました。Donovan Schö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

);

?>

このページを読み込もうとすると、エラー 500 サーバー エラーが発生します。さらに、この性質の他のすべての評判の良いチュートリアルで、同じエラー 500 が発生しました。

Cyber​​duck で S3 に接続して、キーとシークレット キーが有効であることを確認しました。

私が間違っている可能性があることについて、誰かが手がかりを持っていますか?

ありがとう、

ショーン

4

9 に答える 9

9

公式のAWS SDK for PHPの使用も検討する必要があります。SDK で S3 を使用する例は、S3 ユーザー ガイドに記載されています。

于 2013-04-29T16:59:31.487 に答える
8

次の composer コマンドを実行して、Amazon PHP SDK の最新バージョンをダウンロードできます。

composer require aws/aws-sdk-php

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();
}

ここから段階的な詳細を取得するPHP を使用した Amazon S3 ファイルのアップロード

于 2016-04-22T12:34:48.820 に答える
1

Amazon の最新の SDK で更新されたスクリプトは見つかりませんでした。私は自分でそれを作りました。これは、php コマンドライン インタープリター スクリプトとして機能します。試してみる :

https://github.com/arizawan/aiss3clientphp

于 2014-02-10T09:41:48.913 に答える
0

Amazon S3 に画像をアップロードするサンプル コードを次に示します。

// Bucket Name
$bucket="BucketName";
if (!class_exists('S3'))require_once('S3.php');

    //AWS access info
    if (!defined('awsAccessKey')) define('awsAccessKey', 'ACCESS_KEY');
    if (!defined('awsSecretKey')) define('awsSecretKey', 'ACCESS_Secret_KEY');

    $s3 = new S3(awsAccessKey, awsSecretKey);
    $s3->putBucket($bucket, S3::ACL_PUBLIC_READ);
    if($s3->putObjectFile($tmp, $bucket , $image_name_actual,S3::ACL_PUBLIC_READ) )
    {
        $message = "S3 Upload Successful.";
        $s3file='http://'.$bucket.'.s3.amazonaws.com/'.$actual_image_name;
        echo "<img src='$s3file'/>";
        echo 'S3 File URL:'.$s3file;
    }
    else{
        $message = "S3 Upload Fail.";
    }
}
于 2016-03-03T20:03:22.490 に答える
0

私は S3 API に詳しくありませんが、https://github.com/KnpLabs/Gaufretteでストレージとして使用しました。Gaufrette は、S3 およびその他のファイル サービス/システムの上に非常に優れた抽象化レイヤーを提供するライブラリです。

于 2013-04-27T20:16:23.340 に答える