[英]Symfony 4 S3Client::factory issue: 'class Aws\S3\S3Client not found'
[英]AWS S3 PHP SDK, S3Client class not found
我正在尝试使用他们的 PHP SDK v3 建立与 Amazon S3 存储的连接。
我正在关注本指南: https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/getting-started_basic-usage.html
所以我使用 Composer 安装了 SDK 并创建了一个名为 ftptest.php 的文件(不要介意名称),其中包含以下内容:
<?PHP
require '/home/printzel/public_html/new/vendor/autoload.php';
use Aws\S3\S3Client;
use Aws\Exception\AwsException;
//Create a S3Client
$s3 = new Aws\S3\S3Client([
'version' => 'latest',
'region' => 'nl-ams1'
]);
?>
但是当转到页面时,我收到 HTTP 500 错误。 检查我的错误日志时,我看到:
[01-Apr-2021 14:01:27 UTC] PHP Fatal error: Uncaught Error: Class 'Aws\S3\S3Client' not found in /home/printzel/public_html/new/ftptest.php:9
Stack trace:
#0 {main}
thrown in /home/printzel/public_html/new/ftptest.php on line 9
如您所见,我包含了我的自动加载文件。 但由于某种原因,它找不到正确的 class,为什么?
这是目前我的结构在我的服务器上的样子:
自动加载位置:
/home/printzel/public_html/new/vendor/autoload.php
AWS 文件夹位置:
/home/printzel/public_html/new/vendor\aws\aws-sdk-php\src
composer.json 在我的根目录中:
{
"require": {
"aws/aws-sdk-php": "^3.176"
}
}
您需要将Aws\S3\S3Client
替换为S3Client
:
use Aws\S3\S3Client;
use Aws\Exception\AwsException;
//Create a S3Client
$s3 = new S3Client([
'version' => 'latest',
'region' => 'nl-ams1'
]);
更多细节在这里 -文档
希望能帮到你
您也可以创建别名:
use Aws\S3\S3Client as AwsClient;
use Aws\Exception\AwsException;
//Create a S3Client
$s3 = new AwsClient([
'version' => 'latest',
'region' => 'nl-ams1'
]);
确保包含 SDK 自动加载器的路径,我建议您使用如下所示的相对路径。
// require the amazon sdk from your composer vendor dir
require __DIR__.'/vendor/autoload.php';
完成后,如果仍然失败,则必须在 sdk 路径或 sdk 版本上遇到问题,请确保您按照以下步骤一一执行并一一重做。
1. 通过 Composer 为 PHP 添加 AWS SDK 作为依赖项
如果 Composer 已全局安装在您的系统上,请在项目的基本目录中运行以下命令以安装 AWS SDK for PHP 作为依赖项:
composer require aws/aws-sdk-php
2. 将自动加载器添加到您的 php 脚本
要在脚本中为 PHP 使用 AWS SDK,请在脚本中包含自动加载器,如下所示。
<?php
require '/path/to/vendor/autoload.php';
?>
3. 确保您在 enr 中设置了访问权限密钥。
您需要 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY。 在 enr 中设置。 如果您这样做,您可以忽略将 AWS_SECRET_ACCESS_KEY 和 AWS_ACCESS_KEY_ID 传递给代码。
<?php
use Aws\S3\S3Client;
define('AWS_KEY', 'place access key here');
define('AWS_SECRET_KEY', 'place secret key here');
// require the amazon sdk from your composer vendor dir
require __DIR__.'/vendor/autoload.php';
// Instantiate the S3 class and point it at the desired host
$client = new S3Client([
'region' => '',
'version' => '2021-03-01',
'credentials' => [
'key' => AWS_ACCESS_KEY_ID ,
'secret' => AWS_SECRET_ACCESS_KEY
]
]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.