我有一个使用 AWS SDK PHP 构建的 Web 应用程序,目前我从 /etc/aws/creds.php 中的外部配置文件中提取所有凭证(返回参数值的 php 数组)。这适用于默认的 php.ini 设置(松散和开放)。当我开始锁定事情时,我正在努力解决这个错误:
PHP 致命错误:未捕获的异常“Aws\Common\Exception InstanceProfileCredentialsException”,并带有消息“从实例配置文件元数据服务器检索凭据时出错。当您不在 Amazon EC2 内部运行时,您必须在创建客户端时在“key”和“secret”选项中提供您的 AWS 访问密钥 ID 和秘密访问密钥,或者提供实例化的 Aws\Common\Credentials CredentialsInterface 对象。
这会在 /var/log/httpd/error_log 中获取。AWS SDK API 上的文档说我必须为给定用户使用 .aws/credentials 文件。那么我的用户是http(对于apache),它的主目录是/srv/http/。我无法有效地将凭据放入该文件中,因为它将对我网站上的任何人公开可用。
我的问题是如何更改此凭据文件的位置?我需要将位置更改为凭据文件,这样我才能解决错误,这样我就可以收紧 php.ini display_errors = Off 以便我的脚本可以正常安全地工作。(注意:我知道单个 php.ini 更改并不是安全的圣杯,它只是阻碍我完全锁定我的 php.ini 配置的能力的一件事)。