PHP
AWS
S3
FuelPHP

AWS SDK for PHPをComposerではなくzipで落として使う

AWS SDK for PHPの使用はComposerが推奨されていますが、zipを落として使用したい場合があるかと思います。そんな時用のメモ。

環境

  • FuelPHP
  • AWS SDK for PHP v2
  • PHP5.3

AWS SDK for PHPの最新バージョンはv3です。v3ではPHP 5.5以上が必要になります。

AWS SDK for PHP ダウンロード

公式サイトからzipファイルを落としてきます。
v3: https://docs.aws.amazon.com/aws-sdk-php/v3/guide/getting-started/installation.html
v2: https://aws.amazon.com/jp/releasenotes/release-aws-sdk-for-php-2-4-2/

解凍

zipファイルを落としたら解凍してサーバに設置します。設置場所はどこでも良いです。FuelPHPを使用している場合はpublic_html/fuel/vendor/あたりでしょうか。

ミニマムテストコード

sample.gifを作成してpublic_html直下に置いています。sample.gifがS3のtest/以下にアップロードされていれば成功です。なお、成功しても失敗しても画面に何も表示されません。

public_html/fuel/app/classes/controller/s3.php
<?php

require('fuel/vendor/aws/aws-autoloader.php');

use Aws\S3\S3Client;
use Aws\Common\Enum\Region; 

class Controller_S3 extends Controller {
    public function action_index() {

        // アクセスキー
        $key = 'XXXXXXXXXXXXXXXXXXXXXX';

        //シークレットアクセスキー
        $secret = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; 

        // s3のリージョン(日本の場合)
        $region = Region::TOKYO;

        // バケット名
        $bucket = 'test';

        // アップロードしたいファイルのパスとファイル名
        $input_file_path = DOCROOT.'sample.gif';

        // アップロード先 (S3) のパスとファイル名
        $output_file_path = 'sample.gif';

        $s3 = S3Client::factory(array(
            'key' => $key,
            'secret' => $secret,
            'region' => $region
        ));

        // アップロード
        $s3->putObject(array(
            'Bucket' =>$bucket,
            'Key' => $output_file_path,
            'Body' => file_get_contents($input_file_path)
        ));
    }
}

参考