推荐使用Composer安装AWS SDK for PHP v3,需确保PHP≥8.1、启用ext-curl/ext-json/ext-mbstring,运行composer require aws/aws-sdk-php并检查vendor/autoload.php加载及S3Client.php存在性。

直接用 composer require aws/aws-sdk-php 就能装好,但前提是 PHP 版本 ≥ 8.1、ext-curl 和 ext-json 已启用,否则会静默失败或报错。
为什么 composer require aws/aws-sdk-php 会失败
不是命令写错了,而是环境卡在了底层依赖上:
-
ext-mbstring缺失 —— SDK v3 强制要求,但错误提示里不显式说,只报Class 'Mbstring' not found或 autoload 失败 - PHP 版本低于 8.1 —— Composer 会拉取兼容版(比如 v3.25.x),但部分服务客户端(如
S3EncryptionClient)在低版本下运行时抛ParseError - 已存在旧版
guzzlehttp/guzzle锁定在 6.x —— SDK v3 要求 7.5+,composer require会卡在依赖解析,提示Your requirements could not be resolved - 项目根目录没
composer.json—— 不影响安装,但后续升级或 lock 文件生成会异常,建议先composer init初始化
composer require aws/aws-sdk-php 的实际执行要点
别只复制粘贴命令,注意路径、权限和内存限制:
- 必须在项目根目录执行,确保
vendor/写入权限正常;若用 Docker,确认vendor/没被 volume 覆盖 - 内存不足时会中断下载,加
-d memory_limit=-1更可靠:php -d memory_limit=-1 composer.phar require aws/aws-sdk-php - 想锁死小版本(比如只要 3.29.x):用
composer require aws/aws-sdk-php:^3.29,避免自动升到 3.30+ 引发加密客户端兼容问题 - 装完检查
vendor/aws/aws-sdk-php/src/S3/S3Client.php是否存在,比看终端“success”更准
装完后 require 'vendor/autoload.php' 报错怎么办
常见不是路径错,而是加载时机或上下文问题:
-
require必须在脚本最顶部,且不能包在函数/条件块里,否则类注册失效 - 路径写绝对路径更稳:
require __DIR__ . '/vendor/autoload.php';,避免chdir()后相对路径崩掉 - 如果用的是 Apache + mod_php,确认
open_basedir没禁掉vendor/目录 - CLI 下运行正常但 Web 下报错?大概率是 CLI 和 Web 使用的 PHP 配置不同 —— 运行
phpinfo()页面查Loaded Configuration File,对比 CLI 执行php --ini
真正容易被忽略的点是:SDK v3 的 S3EncryptionClient 等高级组件默认不启用,需要手动 composer require doctrine/cache monolog/monolog,否则实例化时才报 Class not found,而不是安装阶段。











