Php AWS S3文件上载:未找到S3Client类

Php AWS S3文件上载:未找到S3Client类,php,amazon-web-services,amazon-ec2,amazon-s3,Php,Amazon Web Services,Amazon Ec2,Amazon S3,我有一个很大的functions.php文件,其中包含我在应用程序中使用的所有函数。在它的顶部,我包括使用Aws\S3\S3客户端名称空间。文件的唯一内容下面是一个大的函数列表 我有一个名为uploadFile的函数,它最初只是将文件加载到本地磁盘并将记录插入数据库。现在我想将文件上传到AWS S3 bucket,但是当我尝试使用我在这里找到的AWS代码时: 它给了我这个错误: Fatal error: Class 'Aws\S3\S3Client' not found in C:\wamp\w

我有一个很大的
functions.php
文件,其中包含我在应用程序中使用的所有函数。在它的顶部,我包括
使用Aws\S3\S3客户端名称空间。文件的唯一内容下面是一个大的函数列表

我有一个名为
uploadFile
的函数,它最初只是将文件加载到本地磁盘并将记录插入数据库。现在我想将文件上传到AWS S3 bucket,但是当我尝试使用我在这里找到的AWS代码时:

它给了我这个错误:

Fatal error: Class 'Aws\S3\S3Client' not found in C:\wamp\www\project\functions.php
以下是我的本地实现:

function uploadFile($file_name, $target_directory, $files = null) {
    $bucket = getS3Bucket();
    $keyname = getS3Key();
    // $filepath should be absolute path to a file on disk
    $filepath = $file_name;

    // Instantiate the client.
    $s3 = S3Client::factory();

    // Upload a file.
    $result = $s3->putObject(array(
        'Bucket'       => $bucket,
        'Key'          => $keyname,
        'SourceFile'   => $file_name,
        'ContentType'  => 'text/plain',
        'ACL'          => 'public-read',
        'StorageClass' => 'REDUCED_REDUNDANCY',
        'Metadata'     => array(
            'param1' => 'value 1',
            'param2' => 'value 2'
        )
    ));

    return $result;
}

似乎我在使用S3API和过程代码时遇到了一个问题。有没有一种方法可以处理这个问题,而不必重新写入我上传文件的所有位置?(换句话说,我将对
uploadFile
函数进行任何必要的更改,但我不想重写该函数的每个实现。)

听起来问题在于,您没有在
函数.php
中包含任何内容来启用自动加载SDK类。包含的内容取决于SDK的安装方式。如果使用Composer,则要使用的自动加载程序将位于
/vendor/autoload.php
中。有关其他安装方法(例如,
aws.phar
aws.zip
)的详细信息,请参阅。

您是如何安装SDK的?你的functions.php是否包含为SDK设置自动加载的内容(例如,
需要'vendor/autoload.php';
)?我在根目录中有一个名为
thirdparty
的目录,其中包含
aws
SDK。愚蠢的是,我没有与它建立任何连接,尽管我没有在其中看到
供应商/autoload.php
(尽管我现在将对此进行研究)。这解决了这个问题!现在来弄清楚为什么它不能验证我的身份。谢谢Jeremy Lindblom!如果你作为一个了不起的提交,我会接受它。