【发布时间】:2021-06-28 13:17:02
【问题描述】:
我正在尝试使用他们的 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
如您所见,我包含了我的自动加载文件。但是由于某种原因它找不到正确的类,为什么?
这是目前我的结构在我的服务器上的样子:
自动加载位置:
/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"
}
}
【问题讨论】:
-
你的自动加载器是由 composer 生成的吗?可以把composer.json的内容贴在这里吗?
-
@AleksandarJakovljevic 是的。我在上面添加了我的 composer.json 内容。
-
这确实很奇怪。您确实检查了供应商文件是否确实到位? :) 你的 PHP 版本是多少?
-
@AleksandarJakovljevic 是的,所有文件都已就位,如果我寻找 S3Client.php,它就在我期望的路径中。我正在使用 PHP 7.3
-
这一刻居然想到了。你能检查一下供应商目录和子目录的权限和所有权吗?与您的 php 脚本正在运行的用户相比,composer 可能在不同的用户下运行,然后文件存在但该特定用户实际上无法访问。
标签: php amazon-web-services class sdk namespaces