EC2 - AWS SDK - config.inc.php 在哪里?

EC2 - AWS SDK - config.inc.php 在哪里?

我已经设置了一个运行 Amazon Linux AMI x86_64 EBS 的实例。

我安装了 httpd 和 PEAR,然后安装了 AWS SDK。

现在,我对所有这些服务器配置都很陌生,所以请原谅我的天真。

我的 Web 根目录为var/www/html。我能找到的对 AWS SDK 的唯一引用为tmp/pear/download/sdk-1.4.7- 我对此感到困惑,在我看来,这个 tmp 文件夹是一个临时目录,因此 SDK 是否安装在其他地方,而我只是没有看到它?

但关键是这样的:http://aws.amazon.com/articles/PHP/4261#configurecredentials我需要说明

以简单方式添加 AWS 凭证(非 PEAR)

导航到 SDK 目录中的 config-sample.inc.php 文件,并将其重命名为 config.inc.php。

打开 config.inc.php 进行编辑。此文件中有说明每个配置值应是什么以及在哪里可以找到它。

当 SDK 加载时,它会首先在与 sdk.class.php 相同的目录中查找 config.inc.php。现在您可以运行示例了!

或者

以灵活的方式添加您的 AWS 凭证 (PEAR)

在 ~/.aws/sdk/config.inc.php 创建一个新的配置文件。

您可以下载并复制 config-sample.inc.php 文件的内容,或者直接从上面的 GitHub 链接获取。

打开 config.inc.php 进行编辑。此文件中有关于每个配置值的含义以及在哪里可以找到它的说明。

输入 echo getenv('HOME'); 来验证 PHP 是否可以访问 HOME 环境变量。

如果前面的命令没有返回到您的用户目录的正确文件路径,请使用 putenv('HOME='); 进行配置。

第一个选项对我来说可行,但文件夹不可写。我不确定这样sudo chown ec2-user /tmp/pear/download/sdk-1.4.7做是否安全。

第二种选择。我将 config.inc.php 文件放入home/ec2-user/.aws/sdk/config.inc.php(我必须创建的 .aws)。

然后我的网页echo getenv('HOME');返回/root。如果我尝试/root通过 FTP 导航到,我会收到错误“无法检索文件列表 - 请确保您有修改权限...”。

我应该从哪里开始?我应该将其放入putenv('HOME=<your-user-path>');我的 php.ini 文件中吗?“your-user-path”到底是什么?还是我必须将其放在每个可访问 Web 文件的顶部?

如果有人能给我一点指导我将不胜感激。

答案1

通过 PEAR 安装 SDK 会将文件放置在/usr/share/pear/AWSSDKforPHPconfig-sample.inc.php该文件夹下。

如果你看一下php -i | grep include_path(或的输出phpinfo()),你应该发现类似以下内容:.:/usr/share/pear:/usr/share/php

这表明 SDK 安装的路径在您的包含文件中可用(即在下面/usr/share/pear)。

您会注意到,SDK 文件的所有权设置为root- 具有0644权限。运行 Apache 的用户可能既不是 root 用户,也不属于 root 组。因此,它应该能够读取文件,但不能修改它们。

/root是用户 root 的主目录。getenv()setenv()函数是 PHP,需要放在 PHP 文件中,而不是 INI 文件中。

对于上述方法,您不需要使用环境变量。但是,如果您将配置放在 HOME 目录中(按照方法 2),那么 PHP 需要知道您的主目录才能读取文件(这可能存在其他问题,因为许多安装将限制仅访问某些文件夹,例如使用open_basedir)。

使用第二种方法,您需要验证 PHP 是否可以确定您的 HOME 目录。您可以创建一个 PHP 文件并测试该函数。如果一切顺利(即您获得了正确的 HOME 路径 - 包含配置文件的目录),那么您根本getenv()不需要使用该路径或该函数。setenv()

另一方面,如果路径不正确,则您需要在脚本顶部设置正确的主路径(即在引用它之前使用 SDK 的路径)。本质上,您正在将路径导出到包含您配置的 .aws 文件夹的目录 - 每当您调用 SDK 时都需要设置该变量。

至于您收到的响应(即/root)-如果您以root身份从命令行运行php脚本,那么响应是预期的。如果您通过Web浏览器运行它,那么有些事情就不太对劲了。Apache通常设置为自己的用户(UID = 48),其主目录设置为/var/www-无论如何,Apache都不应以root身份运行。通常,Apache以root身份启动,然后更改为httpd.conf文件中指定的用户。如果您正在运行suPHP或php-fpm,那么PHP很可能没有以与Web服务器相同的用户身份运行。请注意,您可以以不同的用户身份运行相同的脚本,每次都会得到不同的响应-在您期望它运行的条件下运行它(即,如果脚本打算通过浏览器访问,则这样做;如果它是shell脚本,则以此方式运行它)。

相关内容