我很难通过 Media Temple 中的aws-php-sdk
设置 AWS S3 使用的凭证。
我继续收到错误:Cannot read credentials from /.aws/credentials
我尝试按照指南通过 https://docs.aws.amazon.com/cli/latest/userguide/awscli-install-linux.html 安装 AWS CLI。 然后,我使用以下方法通过 https://docs.aws.amazon.com/cli/latest/userguide/tutorial-ec2-ubuntu.html#configure-cli 设置凭据
。但我仍然得到这个错误。
然后,我与Media Temple支持人员进行了聊天,他们在root中创建.aws/credentials文件,但随后错误消息更改为:
Warning: is_readable(): open_basedir restriction in effect. File(/.aws/credentials) is not within the allowed path(s)
MT建议我不要更改基础设置。他们还建议我尽可能简单地更改从何处读取凭据。
有人在机器翻译上成功使用 AWS 凭证吗?
尝试通过SSH使用AWS CLI执行此操作就像在Media Temple上用头撞砖墙一样。
然后,我尝试通过环境变量设置凭据,但这是不可能的。
然后我想到了将凭证文件放在 PHP 可以访问的目录中的想法。 但是,我必须设置aws-php-sdk
要查找它的位置。 我在某些文档中找到了环境变量,并尝试通过 php 的setenv()
函数设置变量。 没有骰子。
然后,我在aws-php-sdk
中搜索了我看到的初始错误,回溯,直到我找到设置凭据文件位置的位置。 事实证明文档是错误的,正确的环境变量名称是HOME
。
最后,只需在使用 AWS 之前设置HOME
即可。 足够容易,但应该更容易 100 倍。 大致如下:
// Set environment variable for credentials location
putenv('HOME=../');
// Set bucket name
$this->bucket = $bucket;
// Create an S3Client
$this->s3Client = new AwsS3S3Client([
'profile' => $this->profile,
'version' => $this->version,
'region' => $this->region
]);