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

Docker中CentOS7环境下PHP调用AWS CLI遇SSO令牌错误

问题解决:浏览器访问PHP调用AWS CLI提示SSO令牌无效,命令行运行正常

核心原因

Apache运行PHP时使用的用户(通常是apache或www-data)与你手动在容器内运行PHP的用户(比如root)权限不一致,导致SSO令牌文件无法被读取,或者环境变量未正确传递。

解决方案

1. 修正AWS目录权限

SSO令牌默认存储在/.aws/sso/cache/目录下,该目录通常属于root用户,Apache用户无法访问。执行以下命令调整权限:

chown -R apache:apache /.aws/
chmod -R 700 /.aws/

确保Apache用户能读取AWS配置和令牌文件。

2. 修复环境变量格式

你的PHP代码中环境变量的分隔符存在问题,Linux下多个环境变量需要用;单独分隔,修改代码中的$env变量:

$env = 'AWS_DEFAULT_REGION=us-east-2; AWS_DEFAULT_OUTPUT=text; AWS_CONFIG_FILE=/.aws/config; AWS_SHARED_CREDENTIALS_FILE=/.aws/credentials';

3. 验证Apache用户权限

在PHP文件中添加一行查看当前运行用户:

echo "Current user: " . exec('whoami') . "<br>";

浏览器访问后确认用户是apache,然后切换到该用户手动运行PHP文件,复现问题:

su - apache -c "php /var/www/html/your-file.php"

如果同样报错,说明权限问题确实存在,按步骤1调整权限即可。

4. 替代方案:使用IAM凭证而非SSO令牌

SSO令牌依赖用户会话,不适合服务器端运行场景。建议直接在/.aws/credentials中配置IAM用户凭证:

[default]
aws_access_key_id=你的访问密钥ID
aws_secret_access_key=你的私有访问密钥

或者在AWS环境中运行容器时,为容器分配IAM角色,无需手动配置凭证,更安全可靠。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 16:22:33