直接用composer require aws/aws-sdk-php安装,需PHP≥7.2(推荐≥8.0),SDK主包已含全部服务;实例化S3客户端时须显式指定region、正确配置凭证(推荐环境变量),并引入vendor/autoload.php。

直接装就行,不用额外配置 Composer 源或改权限,但必须确认 PHP 版本 ≥ 7.2(推荐 ≥ 8.0),否则 aws/aws-sdk-php v3.290+ 会安装失败或运行报错。
用 composer require 装最新稳定版 SDK
这是最常用也最稳妥的方式。SDK 主包 aws/aws-sdk-php 已经包含所有服务客户端(S3、EC2、SQS 等),不需要单独装子包(除非你明确只用某几个服务且想减小体积)。
执行命令:
composer require aws/aws-sdk-php
常见错误现象:
立即学习“PHP免费学习笔记(深入)”;
-
Your requirements could not be resolved:大概率是 PHP 版本太低,检查php -v;Composer 自动选了不兼容的 SDK 大版本(如 PHP 7.1 下强行拉了 v3.300+) - 装完没生成
vendor/autoload.php:说明当前目录不是 Composer 项目根目录(即没有composer.json),先运行composer init或确认路径
PHP 里怎么实例化 S3 客户端(典型使用场景)
引入自动加载后,直接 new Aws\S3\S3Client,传入配置数组。关键不是“能不能连”,而是「凭证和区域写对没」——90% 的 AccessDenied 或 InvalidSignatureException 都卡在这儿。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
实操建议:
- 不要硬编码
key和secret,优先用环境变量:AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY -
region必须显式指定,不能依赖默认值;S3 桶在us-east-1,但客户端 region 写成ap-southeast-1就会 400 错误 - 如果走代理或内网网关,加
endpoint参数,此时region可设为任意非空字符串(如custom),否则 SDK 会校验 region 和 endpoint 匹配
最小可用示例:
$s3 = new Aws\S3\S3Client([
'version' => 'latest',
'region' => 'us-east-1',
'credentials' => [
'key' => $_ENV['AWS_ACCESS_KEY_ID'],
'secret' => $_ENV['AWS_SECRET_ACCESS_KEY'],
],
]);
为什么 require aws/aws-sdk-php 后 vendor 里没看到 Aws 命名空间?
不是没装上,是 autoloader 没生效——多数情况是忘了在 PHP 文件开头 require 'vendor/autoload.php'。
容易踩的坑:
- 路径写错:
require '../vendor/autoload.php'(相对路径易出错),建议用__DIR__ . '/vendor/autoload.php' - Web 服务器文档根目录不在项目根目录下,导致 PHP 脚本找不到
vendor/;这时要么调整 web root,要么把autoload.php路径打全 - 用了 PSR-4 自定义 autoload(比如 Laravel 的
composer.json里改过autoload),结果覆盖了 SDK 的默认映射——别动autoload,SDK 用的是 PSR-0 + PSR-4 混合注册,Composer 自动生成的 autoload 文件已处理好
真正麻烦的点往往不在安装,而在 credential chain 的隐式行为:SDK 会按顺序查环境变量 → ~/.aws/credentials → EC2 instance profile……一旦本地有残留的 ~/.aws/credentials,开发时就可能连错账号,而错误提示里完全不告诉你读的是哪个来源。


















