

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

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

# 的 PHP 教程 AWS Cloud9
<a name="sample-php"></a>

本教程使你能够在 AWS Cloud9 开发环境中运行一些 PHP 脚本。

按照本教程操作并创建此示例可能会对您的 AWS 账户收费。其中包括可能对 Amazon EC2 和 Amazon S3 等服务收取的费用。有关更多信息，请参阅 [Amazon EC2 定价](https://aws.amazon.com/ec2/pricing/)和 [Amazon S3 定价](https://aws.amazon.com/s3/pricing/)。

**Topics**
+ [先决条件](#sample-php-prereqs)
+ [步骤 1：安装所需工具](#sample-php-install)
+ [步骤 2：添加代码](#sample-php-code)
+ [步骤 3：运行代码](#sample-php-run)
+ [步骤 4：安装和配置 适用于 PHP 的 AWS SDK](#sample-php-sdk)
+ [第 5 步：添加 AWS SDK 代码](#sample-php-sdk-code)
+ [第 6 步：运行 S AWS DK 代码](#sample-php-sdk-run)
+ [步骤 7：清除](#sample-php-clean-up)

## 先决条件
<a name="sample-php-prereqs"></a>

在使用此示例之前，请确保您的设置满足以下要求：
+ **您必须拥有现有 AWS Cloud9 的 EC2 开发环境。**本示例假设您已经有连接到运行 Amazon Linux 或 Ubuntu Server 的 Amazon EC2 实例的 EC2 环境。如果您有不同类型的环境或操作系统，可能需要按照本示例的说明来设置相关的工具。有关更多信息，请参阅 [在中创建环境 AWS Cloud9](create-environment.md)。
+ **您已经打开了现有环境的 AWS Cloud9 IDE。**打开环境时，会在 Web 浏览器中 AWS Cloud9 打开该环境的 IDE。有关更多信息，请参阅 [在中打开环境 AWS Cloud9](open-environment.md)。

## 步骤 1：安装所需工具
<a name="sample-php-install"></a>

在此步骤中，您将安装运行此示例需要的 PHP。

**注意**  
以下过程仅安装 PHP。要安装相关工具，如 Apache Web 服务器和 MySQL 数据库，请参阅《Amazon EC2 用户指南》**中的[教程：在 Amazon Linux 上安装 LAMP Web 服务器](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-LAMP.html)。

1. 在 AWS Cloud9 IDE 的终端会话中，通过运行**`php --version`**命令来确认 PHP 是否已安装。（要开始新的终端会话，请在菜单栏上依次选择 **Window（窗口）**> **New Terminal（新建终端）**。） 如果成功，输出将包含 PHP 版本号。如果已安装 PHP，请向前跳至 [步骤 2：添加代码](#sample-php-code)。

1. 运行 **`yum update`**（适用于 Amazon Linux）或 **`apt update`**（适用于 Ubuntu Server）命令，以帮助确保已安装最新的安全更新和错误修复。

   对于 Amazon Linux 2 和 Amazon Linux：

   ```
   sudo yum -y update
   ```

   对于 Ubuntu Server：

   ```
   sudo apt update
   ```

1. 通过运行** `install` **命令安装 PHP。

   对于 Amazon Linux 2：

   ```
   sudo amazon-linux-extras install -y php7.2
   ```

   对于 Amazon Linux：

   ```
   sudo yum -y install php72
   ```
**注意**  
您可以使用以下命令查看 Amazon Linux 的版本：  

   ```
   cat /etc/system-release
   ```

   对于 Ubuntu Server：

   ```
   sudo apt install -y php php-xml
   ```

   有关更多信息，请参阅 PHP 网站上的[安装和配置](http://php.net/manual/en/install.php)。

## 步骤 2：添加代码
<a name="sample-php-code"></a>

在 AWS Cloud9 IDE 中，使用此内容创建一个文件，然后使用该名称保存该文件`hello.php`。（要创建文件，请在菜单栏上依次选择 **File（文件）**、**New File（新建文件）**。要保存文件，请依次选择 **File（文件）**、**Save（保存）**，并为 **Filename（文件名）**键入 `hello.php`、然后选择 **Save（保存）**。）

```
<?php
  print('Hello, World!');

  print("\nThe sum of 2 and 3 is 5.");

  $sum = (int)$argv[1] + (int)$argv[2];

  print("\nThe sum of $argv[1] and $argv[2] is $sum.");
?>
```

**注意**  
上述代码不依赖于任何外部文件。但是，如果您曾经在文件中包含或要求使用其他 PHP 文件，并且想要 AWS Cloud9 在键入时使用这些文件完成代码，请打开 “**首选项**” 中的 “**项目”、“PHP 支持”、“启用 PHP 代码完成**” 设置，然后将这些文件的路径添加到 “**项目”、“PHP 支持”、“PHP 完成包含路径**” 设置中。（要查看和更改您的首选项，请在菜单栏上选择 **AWS Cloud9、Preferences (首选项)**。）

## 步骤 3：运行代码
<a name="sample-php-run"></a>

1. 在 AWS Cloud9 IDE 的菜单栏上，选择 “运行”、“**运行****配置**”、“**新建运行配置**”。

1. 在 **[New] - Idle ([新建] - 空闲)** 选项卡上，选择 **Runner: Auto (运行程序：自动)**，然后选择 **PHP (cli)**。

1. 在 **Command（命令）**中，键入 `hello.php 5 9`。在代码中，`5` 表示 `$argv[1]`，`9` 表示 `$argv[2]`。（`$argv[0]` 表示文件 (`hello.php`) 的名称。）

1. 选择 **Run (运行)** 按钮，然后比较输出。

   ```
   Hello, World!
   The sum of 2 and 3 is 5.
   The sum of 5 and 9 is 14.
   ```

![\[在 AWS Cloud9 IDE 中运行 PHP 代码的输出\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/images/ide-php-simple.png)


## 步骤 4：安装和配置 适用于 PHP 的 AWS SDK
<a name="sample-php-sdk"></a>

您可以增强此示例，使用创建 Amazon S3 存储桶，列出您的可用存储桶，然后删除您刚刚创建的存储桶。 适用于 PHP 的 AWS SDK 

在此步骤中，您将安装和配置 适用于 PHP 的 AWS SDK，它提供了一种通过您的 PHP 代码与 Amazon S3 等 AWS 服务进行交互的便捷方式。在安装之前 适用于 PHP 的 AWS SDK，您应该先安装 C [omposer](https://getcomposer.org/)。安装后 适用于 PHP 的 AWS SDK，您必须在您的环境中设置凭据管理。 适用于 PHP 的 AWS SDK 需要这些凭据才能与 AWS 服务进行交互。

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

使用静默 (**) 和显示错误 (`curl`) 选项运行** `-s` `-S`命令，将 Composer 安装程序传送到 PHP 档案 (PHAR) 文件，按约定名为 `composer.phar`。

```
curl -sS https://getcomposer.org/installer | php
```

### 要安装 适用于 PHP 的 AWS SDK
<a name="sample-php-sdk-install-sdk"></a>

对于 Ubuntu Server，请安装 Composer 安装 适用于 PHP 的 AWS SDK所需的其他软件包。

```
sudo apt install -y php-xml php-curl
```

对于 Amazon Linux 或 Ubuntu Server，请使用 **php** 命令运行 Composer 安装程序以安装 适用于 PHP 的 AWS SDK。

```
php composer.phar require aws/aws-sdk-php
```

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

**注意**  
安装后，Composer 可能会建议您安装其他依赖项。您可以使用如下命令执行此操作，指定要安装的依赖项列表。例如，以下命令会指示 Composer 安装以下依赖项列表。  

```
php composer.phar require psr/log ext-curl doctrine/cache aws/aws-php-sns-message-validator
```

有关更多信息，请参阅 *适用于 PHP 的 AWS SDK 开发人员指南*中的[安装](https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/installation.html)。

### 在环境中设置凭证管理
<a name="sample-php-sdk-creds"></a>

每次使用调 适用于 PHP 的 AWS SDK 用 AWS 服务时，都必须为呼叫提供一组凭据。这些证书决定了是否 适用于 PHP 的 AWS SDK 具有进行该呼叫的相应权限。如果凭证没有包括合适的权限，调用将失败。

在此步骤中，您将凭证存储在环境内。为此，请按照 [AWS 服务 从中的环境中呼叫 AWS Cloud9](credentials.md) 中的说明操作，然后返回到本主题。

有关更多信息，请参阅 *适用于 PHP 的 AWS SDK 开发人员指南*中的[基本用法](https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/basic-usage.html)的“创建客户端”部分。

## 第 5 步：添加 AWS SDK 代码
<a name="sample-php-sdk-code"></a>

在此步骤中，您会添加一些代码，此次用于与 Amazon S3 交互来创建存储桶，列出可用的存储桶，然后删除刚刚创建的存储桶。您将稍后运行此代码。

在 AWS Cloud9 IDE 中，使用此内容创建一个文件，然后使用该名称保存该文件`s3.php`。

```
<?php
require './vendor/autoload.php';

if ($argc < 4) {
    exit("Usage: php s3.php <the time zone> <the bucket name> <the AWS Region to use>\n" .
        "Example: php s3.php America/Los_Angeles my-test-bucket us-east-2");
}

$timeZone = $argv[1];
$bucketName = $argv[2];
$region = $argv[3];

date_default_timezone_set($timeZone);

$s3 = new Aws\S3\S3Client([
    'region' => $region,
    'version' => '2006-03-01'
]);

# Lists all of your available buckets in this AWS Region.
function listMyBuckets($s3)
{
    print("\nMy buckets now are:\n");

    $promise = $s3->listBucketsAsync();

    $result = $promise->wait();

    foreach ($result['Buckets'] as $bucket) {
        print("\n");
        print($bucket['Name']);
    }
}

listMyBuckets($s3);

# Create a new bucket.
print("\n\nCreating a new bucket named '$bucketName'...\n");

try {
    $promise = $s3->createBucketAsync([
        'Bucket' => $bucketName,
        'CreateBucketConfiguration' => [
            'LocationConstraint' => $region
        ]
    ]);

    $promise->wait();
} catch (Exception $e) {
    if ($e->getCode() == 'BucketAlreadyExists') {
        exit("\nCannot create the bucket. " .
            "A bucket with the name '$bucketName' already exists. Exiting.");
    }
}

listMyBuckets($s3);

# Delete the bucket you just created.
print("\n\nDeleting the bucket named '$bucketName'...\n");

$promise = $s3->deleteBucketAsync([
    'Bucket' => $bucketName
]);

$promise->wait();

listMyBuckets($s3);

?>
```

## 第 6 步：运行 S AWS DK 代码
<a name="sample-php-sdk-run"></a>

1. 在 AWS Cloud9 IDE 的菜单栏上，选择 “运行”、“**运行****配置**”、“**新建运行配置**”。

1. 在 **[New] - Idle ([新建] - 空闲)** 选项卡上，选择 **Runner: Auto (运行程序：自动)**，然后选择 **PHP (cli)**。

1. 在 **Command (命令)** 中，键入 `s3.php America/Los_Angeles my-test-bucket us-east-2`，其中：
   +  `America/Los_Angeles` 是默认时区 ID。有关更多信息 IDs，请参阅 PHP 网站上的[支持时区列表](http://php.net/manual/en/timezones.php)。
   +  `my-test-bucket` 是您要创建，然后删除的存储桶的名称。
**注意**  
Amazon S3 存储桶名称必须是唯一的，而 AWS不仅仅是您的 AWS 账户。
   +  `us-east-2`是您要在其中创建存储桶的 AWS 区域的 ID。欲了解更多信息 IDs，请参阅中的[亚马逊简单存储服务 (Amazon S3) S](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) ervice。*Amazon Web Services 一般参考*

1. 选择 **Run (运行)** 按钮，然后比较输出。

   ```
   My buckets now are:
   
   Creating a new bucket named 'my-test-bucket'...
   
   My buckets now are:
   
   my-test-bucket
   
   Deleting the bucket named 'my-test-bucket'...
   
   My buckets now are:
   ```

## 步骤 7：清除
<a name="sample-php-clean-up"></a>

为了防止在您使用完此示例后继续向您的 AWS 账户收费，您应该删除该环境。有关说明，请参阅[删除中的环境 AWS Cloud9](delete-environment.md)。

### 对 PHP 运行器问题进行故障排除 AWS Cloud9
<a name="sample-php-troubleshooting"></a>

如果您遇到 PHP CLI 运行程序的问题，则必须确保已将运行程序设置为 PHP，并确保启用调试器模式。