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!如果你作为一个了不起的提交,我会接受它。