

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 适用于 PHP 的 AWS SDK 版本 3 入门
<a name="getting-started_index"></a>

本章专门帮助您启动和运行适用于 PHP 的 AWS SDK版本 3。

**Topics**
+ [先决条件](getting-started_requirements.md)
+ [安装](getting-started_installation.md)
+ [使用进行身份验证 AWS](credentials.md)
+ [创建简单的应用程序](hello.md)
+ [AWS Cloud9 与 SDK 一起使用](cloud9.md)

# 适用于 PHP 的 AWS SDK 版本 3 的要求和建议
<a name="getting-started_requirements"></a>

要获得最佳效果 适用于 PHP 的 AWS SDK，请确保您的环境支持以下要求和建议。

## 要求
<a name="requirements"></a>

要使用 适用于 PHP 的 AWS SDK，必须使用启用了 [SimplexML PHP 扩展的 PHP](https://www.php.net/manual/en/book.simplexml.php) 版本 8.1 或更高版本。如果你需要签署私有亚马逊 CloudFront URLs，你还需要使用 [OpenSSL PHP 扩展程序](http://php.net/manual/en/book.openssl.php)。

## 建议
<a name="recommendations"></a>

除了最低要求之外，我们还建议您安装、卸载并使用以下内容。


****  

|  |  | 
| --- |--- |
|  安装 [cURL](http://php.net/manual/en/book.curl.php) 7.16.2 或更高版本  |  使用使用 OpenSSL/NSS 和 zlib 编译的 curl 的最新版本。如果您的系统中没有安装 cURL，并且您也没有为客户端配置自定义 http\$1handler，开发工具包将使用 PHP 流封装程序。  | 
|  使用 [OPCache](http://php.net/manual/en/book.opcache.php)   |  使用该 OPcache 扩展通过将预编译的脚本字节码存储在共享内存中来提高 PHP 性能。这样 PHP 就不需要在每次请求时加载并解析脚本。默认情况下，此扩展通常为启用状态。 运行亚马逊 Linux 时，你需要安装 php56-opcache 或 php55-opcache yum 包才能使用该扩展程序。 OPCache   | 
|  在生产环境中卸载 [Xdebug](http://xdebug.org/)   |  Xdebug 有助于发现性能瓶颈。但如果性能对于您的应用程序至关重要，请不要在您的生产环境中安装 Xdebug 扩展。加载此扩展会显著降低开发工具包的性能。  | 
|  使用 [Composer](http://getcomposer.org) 类映射自动加载工具  |  自动加载工具可加载 PHP 脚本需要的类。Composer 生成自动加载工具，自动加载您的应用程序的 PHP 脚本，以及您的应用程序需要的其他所有 PHP 脚本，包括 适用于 PHP 的 AWS SDK。 我们建议您针对生产环境使用类映射自动加载工具，以提升自动加载工具的性能。将 `-o` 或 `==optimize-autoloader` 选项传递到 Composer 的安装命令，可生成类映射自动加载工具。  | 

## 兼容性测试
<a name="compatibility-test"></a>

运行 SDK 代码库中的 [https://github.com/aws/aws-sdk-php/blob/master/compatibility-test.php](https://github.com/aws/aws-sdk-php/blob/master/compatibility-test.php) 文件，验证系统是否可以运行 SDK。兼容性测试除了可以检查是否满足开发工具包的最低系统要求外，还可以检查是否有可选设置，并提供有助于提升性能的建议。兼容性测试可将结果输出到命令行或 Web 浏览器。如果在浏览器中检查测试结果，成功完成的检查是绿色的，警告是紫色，失败是红色。如果从命令行运行，每项检查的结果是单独的一行。

如果要报告开发工具包的问题，提供兼容性测试的输出有助于发现潜在原因。

# 安装 适用于 PHP 的 AWS SDK 版本 3
<a name="getting-started_installation"></a>

你可以安装 适用于 PHP 的 AWS SDK 版本 3：
+ 作为依赖项（通过 Composer）
+ 作为开发工具包的自带 phar
+ 作为开发工具包的 ZIP 文件

在安装 适用于 PHP 的 AWS SDK 版本 3 之前，请确保您的环境使用的是 PHP 版本 8.1 或更高版本。了解有关[环境要求和建议](getting-started_requirements.md)的更多信息。

**注意**  
通过 .phar 和 .zip 方法安装 SDK，需要单独安装和启用[多字节字符串 PHP 扩展](https://www.php.net/manual/en/book.mbstring.php)。

## 通过 Composer 适用于 PHP 的 AWS SDK 作为依赖项安装
<a name="install-sdk-php-as-a-dependency-via-composer"></a>

 Composer 是安装 适用于 PHP 的 AWS SDK的推荐方式。Composer 是一款 PHP 工具，用于管理和安装项目的依赖项。

有关如何安装 Composer、配置自动加载并遵循定义依赖关系的其他最佳实践的更多信息，请参阅 [getcomposer.org](http://getcomposer.org)。

### 安装 Composer
<a name="install-composer"></a>

如果 Composer 未在您的项目中，请从 [Download Composer 页面](http://getcomposer.org/download)下载并安装 Composer。
+ 对于 **Windows**，请按照 Windows 安装程序说明进行操作。
+ 对于 **Linux**，请按照命令行安装说明进行操作。

### 通过 Composer 添加 适用于 PHP 的 AWS SDK 为依赖项
<a name="add-sdk-php-as-a-dependency-via-composer"></a>

如果您的系统上[已经全局安装了 Composer](https://getcomposer.org/doc/00-intro.md#globally)，请在项目的基目录中运行以下命令以 适用于 PHP 的 AWS SDK 作为依赖项进行安装：

```
$ composer require aws/aws-sdk-php
```

否则，请键入此 Composer 命令以安装最新版本的 适用于 PHP 的 AWS SDK 作为依赖项。

```
$ php -d memory_limit=-1 composer.phar require aws/aws-sdk-php
```

### 将自动加载工具添加到 php 脚本
<a name="add-autoloader-to-your-php-scripts"></a>

Installing Composer 在环境中创建多个文件夹和文件。您将使用的主要文件为 `autoload.php`，位于环境中的 `vendor` 文件夹中。

要在脚本 适用于 PHP 的 AWS SDK 中使用，请在脚本中加入自动加载器，如下所示。

```
<?php
   require '/path/to/vendor/autoload.php';
?>
```

## 使用打包的 Phar 进行安装
<a name="installing-by-using-the-packaged-phar"></a>

的每个版本都 适用于 PHP 的 AWS SDK 包含一个预打包的 phar（PHP 存档），其中包含运行 SDK 所需的所有类和依赖项。此外，phar 会自动为 适用于 PHP 的 AWS SDK 及其所有依赖项注册一个类自动加载器。

您可以[下载打包的 phar](https://docs.aws.amazon.com/aws-sdk-php/v3/download/aws.phar) 并把它包含到您的脚本中。

```
<?php
   require '/path/to/aws.phar';
?>
```

**注意**  
不建议使用带有 Suhosin 补丁的 PHP，但这对于 Ubuntu 和 Debian 分发版是很常见的。在这种情况下，您可能需要在 suhosin.ini 中启用 phar。否则，在您的代码中包含 phar 文件将导致无错误提示的故障。要修改 suhosin.ini，请添加以下行。  

```
suhosin.executor.include.whitelist = phar
```

## 使用 ZIP 文件进行安装
<a name="installing-by-using-the-zip-file"></a>

 适用于 PHP 的 AWS SDK 包括一个 ZIP 文件，其中包含运行 SDK 所需的所有类和依赖关系。此外，这个 ZIP 文件还包含适用于 适用于 PHP 的 AWS SDK 及其依赖项的类自动加载工具。

要安装开发工具包，请[下载 .zip 文件](https://docs.aws.amazon.com/aws-sdk-php/v3/download/aws.zip)，然后在项目中的选定位置进行解压缩。然后将自动加载工具包含到您的脚本中，如下所示。

```
<?php
   require '/path/to/aws-autoloader.php';
?>
```

# AWS 使用 适用于 PHP 的 AWS SDK 版本 3 进行身份验证
<a name="credentials"></a>

使用开发 AWS 时，您必须确定您的代码是如何进行身份验证的。 AWS 服务您可以根据环境和可用的访问权限以不同的方式配置对 AWS 资源的编程 AWS 访问权限。

要选择您的身份验证方法并针对 SDK 进行配置，请参阅[和*工具参考指南中的身份验证AWS SDKs 和*访问](https://docs.aws.amazon.com/sdkref/latest/guide/access.html)。

## 使用 IAM Identity Center 设置身份验证以进行本地开发
<a name="use-idc-for-auth"></a>

我们建议在本地开发且雇主未向其提供身份验证方法的新用户进行设置 AWS IAM Identity Center。此方法包括安装 AWS CLI 以便于配置和定期登录 AWS 访问门户。如果您选择此方法，则在完成*AWS SDKs 和工具参考指南*[中的 IAM Identity Center 身份验证](https://docs.aws.amazon.com/sdkref/latest/guide/access-sso.html)程序后，您的环境应包含以下元素：
+  AWS CLI，用于在运行应用程序之前启动 AWS 访问门户会话。
+ [共享 AWS`config` 文件](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html)，其 `[default]` 配置文件包含一组可由 SDK 引用的配置值。要查找此文件的位置，请参阅*AWS SDKs 和工具参考指南*中的[共享文件的位置](https://docs.aws.amazon.com/sdkref/latest/guide/file-location.html)。
+  共享 `config` 文件包含 [https://docs.aws.amazon.com/sdkref/latest/guide/feature-region.html](https://docs.aws.amazon.com/sdkref/latest/guide/feature-region.html) 设置。这将设置 SDK 用于请求的默认值 AWS 区域 。此区域用于未显式配置 `region` 属性的 SDK 服务请求。
+  在向 AWS发送请求之前，SDK 使用配置文件的 [SSO 令牌提供程序配置](https://docs.aws.amazon.com/sdkref/latest/guide/feature-sso-credentials.html#feature-sso-credentials-profile)来获取凭证。该`sso_role_name`值是与 IAM 身份中心权限集关联的 IAM 角色，允许访问您的应用程序中的用户。 AWS 服务 

  以下示例 `config` 文件展示了使用 SSO 令牌提供程序配置来设置的默认配置文件。配置文件的 `sso_session` 设置是指所指定的 [`sso-session` 节](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html#section-session)。该`sso-session`部分包含启动 AWS 访问门户会话的设置。

  ```
  [default]
  sso_session = my-sso
  sso_account_id = 111122223333
  sso_role_name = SampleRole
  region = us-east-1
  output = json
  
  [sso-session my-sso]
  sso_region = us-east-1
  sso_start_url = https://provided-domain.awsapps.com/start
  sso_registration_scopes = sso:account:access
  ```

 适用于 PHP 的 AWS SDK 无需向您的应用程序添加其他软件包（例如`SSO`和`SSOOIDC`）即可使用 IAM Identity Center 身份验证。

## 启动 AWS 访问门户会话
<a name="accessportal"></a>

在运行可访问的应用程序之前 AWS 服务，您需要为软件开发工具包进行有效的 AWS 访问门户会话，才能使用 IAM Identity Center 身份验证来解析证书。根据配置的会话时长，访问权限最终将过期，并且开发工具包将遇到身份验证错误。要登录 AWS 访问门户，请在中运行以下命令 AWS CLI。

```
aws sso login
```

如果遵循引导并具有默认的配置文件设置，则无需使用 `--profile` 选项来调用该命令。如果您的 SSO 令牌提供程序配置在使用指定的配置文件，则命令为 `aws sso login --profile named-profile`。

要选择性地测试是否已有活动会话，请运行以下 AWS CLI 命令。

```
aws sts get-caller-identity
```

如果会话是活动的，则对此命令的响应会报告共享 `config` 文件中配置的 IAM Identity Center 账户和权限集。

**注意**  
如果您已经有一个有效的 AWS 访问门户会话并且`aws sso login`正在运行，则无需提供凭据。  
登录过程可能会提示您允许 AWS CLI 访问您的数据。由于 AWS CLI 是在适用于 Python 的 SDK 之上构建的，因此权限消息可能包含`botocore`名称的变体。

## 了解有关身份验证的更多信息
<a name="credother"></a>
+ 有关使用 IAM Identity Center 进行身份验证的更多详细信息，请参阅*工具参考指南*中的[AWS SDKs 了解 IAM 身份中心身份验证](https://docs.aws.amazon.com/sdkref/latest/guide/understanding-sso.html)
+ 有关最佳实践的更多信息，请参阅《IAM 用户指南》**中的 [IAM 中的安全最佳实践](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)。
+ 要创建短期 AWS 证书，请参阅 *IAM 用户指南*中的[临时安全证书](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)。
+ 要了解其他 适用于 PHP 的 AWS SDK 可以使用的凭证提供商，请参阅《*工具参考*指南》AWS SDKs 中的[标准化凭证提供商](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html)。

# 使用适用于 PHP 的 AWS SDK 版本 3 创建简单的应用程序
<a name="hello"></a>

使用 适用于 PHP 的 AWS SDK 来给 Amazon S3 打招呼。以下示例显示了 Amazon S3 存储桶的列表。

## 先决条件
<a name="hello-prerequisites"></a>
+  [下载并安装 SDK](getting-started_installation.md) 
+ 使用适用于 PHP 的 AWS SDK 之前，必须先使用 AWS 设置身份验证。有关设置身份验证的信息，请参阅 [AWS 使用 适用于 PHP 的 AWS SDK 版本 3 进行身份验证](credentials.md)

## 在您的代码中包含 SDK
<a name="including-the-sdk-in-your-code"></a>

无论您使用哪种方式安装开发工具包，都可以通过单独的 `require` 语句在您的代码中包含开发工具包。请参阅以下 PHP 代码表，了解符合您的安装方式的代码。请使用系统的实际路径替换 `/path/to/` 的任何实例。


****  

| 安装方法 | 所需语句 | 
| --- | --- | 
|  使用 Composer  |   `require '/path/to/vendor/autoload.php';`   | 
|  使用 phar  |   `require '/path/to/aws.phar';`   | 
|  使用 ZIP  |   `require '/path/to/aws-autoloader.php';`   | 

在此主题中，我们假设了 Composer 安装方法。如果您使用其他安装方法，可以回到这一部分来查找应使用的正确 `require` 代码。

## 编写代码
<a name="sdk-hello-world-code"></a>

确保可以进行身份验证。

复制并在新的源文件中粘贴以下代码。保存并将文件命名为 `hello-s3.php`。

```
<?php

require 'vendor/autoload.php';

use Aws\S3\S3Client;

/**
 * List your Amazon S3 buckets.
 */

//Create a S3Client
// snippet-start:[s3.php.list_buckets.main]
$s3Client = new S3Client([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2006-03-01'
]);

//Listing all S3 Bucket
$buckets = $s3Client->listBuckets();
foreach ($buckets['Buckets'] as $bucket) {
    echo $bucket['Name'] . "\n";
}
```

## 运行程序
<a name="sdk-hello-world-running"></a>

打开命令提示符以运行 PHP 程序。运行 PHP 程序的典型命令语法是：

```
php [source filename] [arguments...]
```

此示例代码不使用任何参数。要运行此代码，请在命令提示符下输入以下内容：

```
$ php hello-s3.php
```

## 后续步骤
<a name="sdk-hello-world-next-steps"></a>

要测试更多其他 Amazon S3 操作，请查看 GitHub 上的 [AWS 代码示例存储库](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/php/example_code/s3)。

# AWS Cloud9 与 适用于 PHP 的 AWS SDK 版本 3 一起使用
<a name="cloud9"></a>

**注意**  
AWS Cloud9 不再向新客户提供。的现有客户 AWS Cloud9 可以继续照常使用该服务。[了解更多](https://aws.amazon.com/blogs/devops/how-to-migrate-from-aws-cloud9-to-aws-ide-toolkits-or-aws-cloudshell/)。

AWS Cloud9 是一个基于 Web 的集成开发环境 (IDE)，其中包含用于在云中编码、构建、运行、测试、调试和发布软件的一系列工具。您可以使用 AWS Cloud9 浏览器编写和运行 PHP 代码。 适用于 PHP 的 AWS SDK AWS Cloud9 包括代码编辑器和终端等工具。由于 AWS Cloud9 IDE 基于云端，因此您可以使用联网的计算机在办公室、家中或任何地方处理项目。有关的一般信息 AWS Cloud9，请参阅《[AWS Cloud9 用户指南》](https://docs.aws.amazon.com/cloud9/latest/user-guide/welcome.html)。

按照以下说明 AWS Cloud9 进行设置 适用于 PHP 的 AWS SDK：
+  [第 1 步：设置 AWS 账户 要使用 AWS Cloud9](#cloud9-php-account) 
+  [第 2 步：设置 AWS Cloud9 开发环境](#cloud9-php-environment) 
+  [第 3 步：设置 适用于 PHP 的 AWS SDK](#cloud9-php-sdk) 
+  [步骤 4：下载示例代码](#cloud9-php-examples) 
+  [步骤 5：运行示例代码](#cloud9-php-run) 

## 第 1 步：设置 AWS 账户 要使用 AWS Cloud9
<a name="cloud9-php-account"></a>

要使用 AWS Cloud9，请从登录到 AWS Cloud9 控制台 AWS 管理控制台。

**注意**  
如果您使用 AWS IAM Identity Center 进行身份验证，则可能需要在 IAM 控制台中`iam:ListInstanceProfilesForRole`向用户附加的策略中添加所需的权限。

要在您的 AWS 账户中设置 IAM 实体以访问 AWS Cloud9 和登录 AWS Cloud9 控制台，请参阅*AWS Cloud9 用户指南 AWS Cloud9*中的[团队设置](https://docs.aws.amazon.com/cloud9/latest/user-guide/setup.html)。

## 第 2 步：设置 AWS Cloud9 开发环境
<a name="cloud9-php-environment"></a>

登录 AWS Cloud9 控制台后，使用控制台创建 AWS Cloud9 开发环境。创建环境后， AWS Cloud9 打开该环境的 IDE。

有关详细信息，请参阅《AWS Cloud9 用户指南》**中的[在 AWS Cloud9中创建环境](https://docs.aws.amazon.com/cloud9/latest/user-guide/create-environment.html)。

**注意**  
在控制台中首次创建环境之后，我们建议您选择**创建新的环境实例 (EC2)**。此选项指示 AWS Cloud9 创建环境，启动 Amazon EC2 实例，然后将新实例连接到新环境。这是开始使用的最快方法 AWS Cloud9。

如果终端未在 IDE 中打开，请打开它。在 IDE 中的菜单栏上，选择**窗口、新终端**。您可以使用终端窗口来安装工具和构建应用程序。

## 第 3 步：设置 适用于 PHP 的 AWS SDK
<a name="cloud9-php-sdk"></a>

 AWS Cloud9 打开开发环境的 IDE 后，使用终端窗口 适用于 PHP 的 AWS SDK 在您的环境中进行设置。

 Composer 是安装 适用于 PHP 的 AWS SDK的推荐方式。Composer 是一款 PHP 工具，用于管理和安装项目的依赖项。

有关如何安装 Composer、配置自动加载并遵循定义依赖关系的其他最佳实践的更多信息，请参阅 [getcomposer.org](http://getcomposer.org)。

### 安装 Composer
<a name="install-composer"></a>

如果 Composer 未在您的项目中，请从 [Download Composer 页面](http://getcomposer.org/download)下载并安装 Composer。
+ 对于 **Windows**，请按照 Windows 安装程序说明进行操作。
+ 对于 **Linux**，请按照命令行安装说明进行操作。

### 通过 Composer 添加 适用于 PHP 的 AWS SDK 为依赖项
<a name="add-sdk-php-as-a-dependency-via-composer"></a>

如果您的系统上[已经全局安装了 Composer](https://getcomposer.org/doc/00-intro.md#globally)，请在项目的基目录中运行以下命令以 适用于 PHP 的 AWS SDK 作为依赖项进行安装：

```
$ composer require aws/aws-sdk-php
```

否则，请键入此 Composer 命令以安装最新版本的 适用于 PHP 的 AWS SDK 作为依赖项。

```
$ php -d memory_limit=-1 composer.phar require aws/aws-sdk-php
```

### 将自动加载工具添加到 php 脚本
<a name="add-autoloader-to-your-php-scripts"></a>

Installing Composer 在环境中创建多个文件夹和文件。您将使用的主要文件为 `autoload.php`，位于环境中的 `vendor` 文件夹中。

要在脚本 适用于 PHP 的 AWS SDK 中使用，请在脚本中加入自动加载器，如下所示。

```
<?php
   require '/path/to/vendor/autoload.php';
?>
```

## 步骤 4：下载示例代码
<a name="cloud9-php-examples"></a>

使用终端窗口将的示例代码下载 适用于 PHP 的 AWS SDK 到 AWS Cloud9 开发环境中。

要将官方 AWS SDK 文档中使用的所有代码示例的副本下载到您环境的根目录中，请运行以下命令：

```
$ git clone https://github.com/awsdocs/aws-doc-sdk-examples.git
```

的代码示例位于`ENVIRONMENT_NAME/aws-doc-sdk-examples/php`目录，其中`ENVIRONMENT_NAME`是您的开发环境的名称。 适用于 PHP 的 AWS SDK 

要继续使用 Amazon S3 示例，我们建议从代码示例 `ENVIRONMENT_NAME/aws-doc-sdk-examples/php/example_code/s3/ListBuckets.php` 开始。此示例将列出 Amazon S3 桶。使用终端窗口导航到 `s3` 目录并列出文件。

```
$ cd aws-doc-sdk-examples/php/example_code/s3
$ ls
```

要在中打开文件 AWS Cloud9，可以`ListBuckets.php`直接在终端窗口中单击。

有关理解代码示例的更多支持，请参阅 [适用于 PHP 的 AWS SDK 代码示例](examples_index.md)。

## 步骤 5：运行示例代码
<a name="cloud9-php-run"></a>

要在 AWS Cloud9 开发环境中运行代码，请选择顶部菜单栏中的 “**运行**” 按钮。 AWS Cloud9 自动检测`.php`文件扩展名并使用 **PHP（内置 Web 服务器）**运行程序来运行代码。但是，在此示例中，我们实际上需要 **PHP（`cli`）** 选项。有关在 AWS Cloud9中运行代码的更多信息，请参阅 *AWS Cloud9 用户指南*中的[运行代码](https://docs.aws.amazon.com/cloud9/latest/user-guide/build-run-debug.html#build-run-debug-run)。

在下面的屏幕截图中，请注意以下基本区域：
+ 1：运行。**运行**按钮位于顶部菜单栏中。这会为结果打开新选项卡。
**注意**  
还可以手动创建新的运行配置。在菜单栏上依次选择**运行**、**运行配置**和**新建运行配置**。
+ 2：命令。 AWS Cloud9 使用您运行的文件的路径和文件名填充**命令**文本框。如果代码需要传入任何命令行参数，则可以将这些参数添加到命令行中，方法与通过终端窗口运行代码时相同。
+ 3：跑步者。 AWS Cloud9 检测到您的文件扩展名为，`.php`然后选择 **PHP（内置 Web 服务器）**运行程序来运行您的代码。选择 **PHP (`cli`)** 以改为运行此示例。

![\[从 AWS Cloud9 IDE 的顶部菜单栏中选择 “运行” 将打开一个新选项卡，其中已填充命令框且已选择 PHP 运行器。\]](http://docs.aws.amazon.com/zh_cn/sdk-for-php/v3/developer-guide/images/cloud9_runconfig.png)


运行代码生成的任何输出都显示在选项卡中。