我很难通过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支持人员进行了聊天,后者在根目录中创建了.aws / credentials文件,但随后错误消息更改为:
Warning: is_readable(): open_basedir restriction in effect. File(/.aws/credentials) is not within the allowed path(s)
MT建议我不要更改baseir设置。他们还建议我尽可能更改读取凭证的位置。
任何人都可以在MT上成功使用AWS凭证吗?
答案 0 :(得分:0)
尝试通过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 Aws\S3\S3Client([
'profile' => $this->profile,
'version' => $this->version,
'region' => $this->region
]);