PHP(32bit版 Windows)で2GB以上のファイルサイズを扱う必要が出たので調査してみた。
AWS SDK for PHPの S3Client S3Clientで2GB以上のファイルサイズの場合、$s3->getIteratorで帰ってくるobject配列の1要素はどのようになっているのだろうか。
S3Client
http://docs.aws.amazon.com/aws-sdk-php/latest/class-Aws.S3.S3Client.html

結果、ファイルサイズは文字列として返ってきた。
約10.92GBの結果は

 'Size' =>
    string(11) "11735575314"

となった。


array(10) {
  'テストデータ.7z' =>
  array(6) {
    'Key' =>
    string(57) "data/テストデータ.7z"
    'LastModified' =>
    string(24) "2014-03-19T09:20:22.000Z"
    'ETag' =>
    string(38) ""0a30256425793998277362ff362c070e-175""
★  'Size' =>
    string(11) "11735575314"
    'Owner' =>
    array(2) {
      'ID' =>
      string(64) "58b46d3e642ea98b3830c5d1ca08f291908ccaedf261f29110d17426756e3e6e"
      'DisplayName' =>
      string(6) "testaname"
    }
    'StorageClass' =>
    string(7) "GLACIER"
  }
  '20110212.dat' =>
  array(6) {
    'Key' =>
    string(58) "data/20110212.dat"
    'LastModified' =>
    string(24) "2014-03-01T06:37:37.000Z"
    'ETag' =>
    string(38) ""6062d5c3577498b032365d77ab15cc35-217""
    'Size' =>
    string(10) "1136066129"
    'Owner' =>
    array(2) {
      'ID' =>
      string(64) "58b46d3e6b4ea8442830c5d1ca08f291908ccaedf261629110d17426756e3e6e"
      'DisplayName' =>
      string(6) "testaname"
    }
    'StorageClass' =>
    string(7) "GLACIER"
  }

  'env_20110212.dat' =>
  array(6) {
    'Key' =>
    string(67) "data/env_20110212.dat"
    'LastModified' =>
    string(24) "2014-03-01T07:02:02.000Z"
    'ETag' =>
    string(38) ""77c60260c8a34c0b2e93148f738628ca-383""
    'Size' =>
    string(10) "2003413719"
    'Owner' =>
    array(2) {
      'ID' =>
      string(64) "58b4642e6b4ea84b3830c5d1ca062291908ccaedf261f29110d17426756e3e6e"
      'DisplayName' =>
      string(6) "testaname"
    }
    'StorageClass' =>
    string(7) "GLACIER"
  }

あれ、AWS SDK for PHPのlistObjectsのReturnには、Size => (int) って書いてある。public Guzzle\Service\Resource\Model listObjects( array $args = array() )

Rest API GET Bucket (List Objects)にはSizeはStringとなってる。

Size
Size in bytes of the object.
Type: String
Ancestor: ListBucketResult.Contents

となっている。
Rest API GET Bucket (List Objects)

ま、
さて、どうやって扱うか。