You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用AWS PHP SDK必须安装AWS Common Runtime for PHP吗?

问题说明

在Laravel应用中使用AWS SDK for PHP创建EventBridge客户端时,抛出如下异常:

Aws\Exception\CommonRuntimeException : AWS Common Runtime for PHP is required to use Signature V4A.

报错提示需要安装AWS Common Runtime for PHP,但公开渠道相关参考资料较少,核心疑问如下:

  • AWS Common Runtime for PHP是否为使用AWS PHP SDK的强制依赖?
  • 是否存在其他认证方式,无需在Docker环境中安装该组件即可正常调用AWS服务?
解答

依赖属性说明

AWS Common Runtime for PHP不是AWS SDK for PHP的全局强制依赖。
触发该报错的核心原因是当前SDK配置启用了Signature V4A签名算法:该算法的底层实现依赖CRT扩展,设计场景为跨多AWS区域的API请求签名,仅当使用多区域全局端点、FIPS/双栈特殊端点、或手动指定签名版本为v4a时,SDK才会加载对应签名逻辑、检查CRT依赖。
常规单区域调用AWS服务时,SDK默认使用的Signature V4签名为纯PHP实现,内置在SDK包内,不需要安装任何额外扩展即可运行。

无需安装CRT的落地方案

以下方案均可在Docker环境中直接使用,不需要额外编译安装PHP扩展:

  • 初始化客户端时显式强制使用V4签名
    初始化EventBridge客户端时,明确传入signature_version配置为v4,同时将region参数配置为EventBridge服务实际部署的单一区域(不要留空、不要填多区域通配值),SDK会直接跳过V4A签名逻辑,使用内置实现完成签名。
    参考配置:
    $eventBridge = new Aws\EventBridge\EventBridgeClient([
        'version' => 'latest',
        'region' => 'ap-southeast-1', // 替换为服务实际所在的单区域标识
        'credentials' => [
            'key'    => env('AWS_ACCESS_KEY_ID'),
            'secret' => env('AWS_SECRET_ACCESS_KEY'),
        ],
        'signature_version' => 'v4', // 强制指定V4签名,绕过CRT依赖检查
    ]);
    
  • 排查自动触发V4A的配置项
    如果没有手动配置过签名版本,检查是否误开启了多区域全局端点、双栈端点、FIPS端点相关配置,这类配置会让SDK自动切换到V4A签名。将端点配置改为对应单区域的标准服务端点后,SDK会自动回退到V4签名,不需要额外调整其他参数。

如果业务不需要跨多区域调用EventBridge,使用V4签名不会存在任何功能缺失,权限校验逻辑完全符合AWS安全要求,可正常使用所有单区域下的EventBridge能力。


内容的提问来源于stack exchange,提问作者cfkane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 02:06:33