

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 將 Amazon RDS 資料庫執行個體新增至您的 PHP Elastic Beanstalk 環境
<a name="create_deploy_PHP.rds"></a>

本主題提供了使用 Elastic Beanstalk 主控台建立 Amazon RDS 的說明。您可以使用 Amazon Relational Database Service (Amazon RDS) 資料庫執行個體存放由應用程式收集與修改的資料。資料庫可與環境耦合並由 Elastic Beanstalk 管理，或者由另一項服務在外部分開建立與管理。在這些指示中，資料庫會與您的環境耦合，並由 Elastic Beanstalk 管理。如需將 Amazon RDS 與 Elastic Beanstalk 整合的相關詳細資訊，請參閱 [將資料庫新增至您的 Elastic Beanstalk 環境](using-features.managing.db.md)。

**Topics**
+ [將資料庫執行個體新增到您的環境](#php-rds-create)
+ [下載驅動程式](#php-rds-drivers)
+ [使用 PDO 或 MySQLi 連接至資料庫](#php-rds-connect)
+ [使用 Symfony 連接至資料庫](#php-rds-symfony)

## 將資料庫執行個體新增到您的環境
<a name="php-rds-create"></a>

**欲將資料庫執行個體新增到您的環境**

1. 開啟 [Elastic Beanstalk 主控台](https://console.aws.amazon.com/elasticbeanstalk)，然後在**區域**清單中選取您的 AWS 區域。

1. 在導覽窗格中，選擇**環境**，然後在清單中選擇您環境的名稱。

1. 在導覽窗格中，選擇 **Configuration (組態)**。

1. 在 **Database (資料庫)** 組態類別中，選擇 **Edit (編輯)**。

1. 選擇資料庫引擎，並輸入使用者名稱和密碼。

1. 若要儲存變更，請選擇頁面底部的**儲存變更**。

新增資料庫執行個體約需要 10 分鐘。環境更新完成時，資料庫執行個體的主機名稱和其他連線資訊會透過下列環境屬性提供給您的應用程式：


| 屬性名稱 | 描述 | 屬性值 | 
| --- | --- | --- | 
|  `RDS_HOSTNAME`  |  資料庫執行個體的主機名稱。  |  在 Amazon RDS 主控台：**端點**的**連線能力和安全性**索引標籤上。  | 
|  `RDS_PORT`  |  資料庫執行個體接受連線的連接埠。預設值在不同資料庫引擎中有所差異。  |  在 Amazon RDS 主控台：**連接埠**的**連線能力和安全性**索引標籤上。  | 
|  `RDS_DB_NAME`  |  資料庫名稱，**ebdb**。  |  在 Amazon RDS 主控台：**資料庫名稱**的**組態**索引標籤上。  | 
|  `RDS_USERNAME`  |  您為資料庫設定的使用者名稱。  |  在 Amazon RDS 主控台：**主要使用者名稱**的**組態**索引標籤上。  | 
|  `RDS_PASSWORD`  |  您為資料庫設定的密碼。  |  無法在 Amazon RDS 主控台中提供參考。  | 

如需設定與 Elastic Beanstalk 環境耦合之資料庫執行個體的相關詳細資訊，請參閱 [將資料庫新增至您的 Elastic Beanstalk 環境](using-features.managing.db.md)。

## 下載驅動程式
<a name="php-rds-drivers"></a>

欲使用 PHP 資料物件 (PDO) 來連接至資料庫，請安裝與您所選的資料庫引擎相符的驅動程式。
+ **MySQL** – [http://php.net/manual/en/ref.pdo-mysql.php](http://php.net/manual/en/ref.pdo-mysql.php)
+ **PostgreSQL** – [http://php.net/manual/en/ref.pdo-pgsql.php](http://php.net/manual/en/ref.pdo-pgsql.php)
+ **Oracle** – [http://php.net/manual/en/ref.pdo-oci.php](http://php.net/manual/en/ref.pdo-oci.php)
+ **SQL Server** – [http://php.net/manual/en/ref.pdo-sqlsrv.php](http://php.net/manual/en/ref.pdo-sqlsrv.php)

如需詳細資訊，請參閱[http://php.net/manual/en/pdo.installation.php](http://php.net/manual/en/pdo.installation.php)。

## 使用 PDO 或 MySQLi 連接至資料庫
<a name="php-rds-connect"></a>

您可以使用 `$_SERVER[`VARIABLE`]`，自環境讀取連線資訊。

以 PDO 而言，請依據主機、連接埠和名稱，建立資料來源名稱 (DSN)。使用資料庫使用者名稱和密碼，將該 DSN 傳送至 [PDO 建構函式](https://php.net/manual/en/pdo.construct.php)。

**Example 使用 PDO 連接至 RDS 資料庫 - MySQL**  

```
<?php
$dbhost = $_SERVER['RDS_HOSTNAME'];
$dbport = $_SERVER['RDS_PORT'];
$dbname = $_SERVER['RDS_DB_NAME'];
$charset = 'utf8' ;

$dsn = "mysql:host={$dbhost};port={$dbport};dbname={$dbname};charset={$charset}";
$username = $_SERVER['RDS_USERNAME'];
$password = $_SERVER['RDS_PASSWORD'];

$pdo = new PDO($dsn, $username, $password);
?>
```

以其他驅動程式而言，請將 `mysql` 取代為您驅動程式的名稱 `pgsql`、`oci` 或 `sqlsrv`。

以 MySQLi 而言，請將主機名稱、使用者名稱、密碼、資料庫名稱和連接埠傳送至 `mysqli` 建構函數。

**Example 使用 mysqli\$1connect() 連接至 RDS 資料庫**  

```
$link = new mysqli($_SERVER['RDS_HOSTNAME'], $_SERVER['RDS_USERNAME'], $_SERVER['RDS_PASSWORD'], $_SERVER['RDS_DB_NAME'], $_SERVER['RDS_PORT']);
```

## 使用 Symfony 連接至資料庫
<a name="php-rds-symfony"></a>

對於 Symfony 3.2 版和更新版本，您可以根據 Elastic Beanstalk 設定的環境屬性，使用 `%env(PROPERTY_NAME)%` 在組態檔案中設定資料庫參數。

**Example app/config/parameters.yml**  

```
parameters:
    database_driver:   pdo_mysql
    database_host:     '%env(RDS_HOSTNAME)%'
    database_port:     '%env(RDS_PORT)%'
    database_name:     '%env(RDS_DB_NAME)%'
    database_user:     '%env(RDS_USERNAME)%'
    database_password: '%env(RDS_PASSWORD)%'
```

如需詳細資訊，請參閱[外部參數 (Symfony 3.4)](http://symfony.com/doc/3.4/configuration/external_parameters.html)。

對於舊版 Symfony，只能存取開頭為 `SYMFONY__` 的環境變數。這表示無法存取 Elastic Beanstalk 定義的環境屬性，您必須定義自己的環境屬性以傳遞 Symfony 的連線資訊。

若要連接資料庫與 Symfony 2，[建立環境屬性](create_deploy_PHP.container.md#php-console-properties)給每個參數。然後，使用 `%property.name%` 於存取組態檔中 Symfony 轉換的變數。例如，名為 `SYMFONY__DATABASE__USER` 的環境屬性可當成 `database.user` 存取。

```
    database_user:     "%database.user%"
```

如需詳細資訊，請參閱[外部參數 (Symfony 2.8)](http://symfony.com/doc/2.8/configuration/external_parameters.html)。