

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Elastic Beanstalk PHP プラットフォームを使用する
<a name="create_deploy_PHP.container"></a>

AWS Elastic Beanstalk は、PHP のさまざまなバージョンのさまざまな**プラットフォームブランチ**を提供し、サポートします。プラットフォームは、スタンドアロンまたは Composer で実行される PHP ウェブアプリケーションをサポートしています。サポートされているプラットフォームブランチの完全なリストについては、「*AWS Elastic Beanstalk プラットフォーム*」ドキュメントの「[PHP](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.PHP)」を参照してください。

Elastic Beanstalk には、Elastic Beanstalk 環境内の Amazon EC2 インスタンスで実行されるソフトウェアのカスタマイズに使用できる[設定オプション](command-options.md)が用意されています。アプリケーションに必要な[環境変数](environments-cfg-softwaresettings.md#environments-cfg-softwaresettings-console)を設定し、Amazon S3 に対してログのローテーションを有効にしたら、アプリケーションの出典で静的ファイルが含まれるフォルダを、プロキシサーバーによって提供されるパスにマッピングし、一般的な PHP 初期化設定を行うことができます。

設定オプションは[実行中の環境の設定を変更するために](environment-configuration-methods-after.md) Elastic Beanstalk コンソールで利用できます。環境を終了したときにその設定が失われないようにするため、[保存済み設定](environment-configuration-savedconfig.md)を使用して設定を保存し、それを後で他の環境に適用することができます。

ソースコードの設定を保存する場合、[設定ファイル](ebextensions.md)を含めることができます。設定ファイルの設定は、環境を作成するたびに、またはアプリケーションをデプロイするたびに適用されます。設定ファイルを使用して、デプロイの間にパッケージをインストールしたり、スクリプトを実行したり、他のインスタンスのカスタマイズオペレーションを実行することもできます。

Composer を使用すると、デプロイの間にパッケージをインストールするために、出典バンドルに [`composer.json` ファイル](#php-configuration-composer)を含めることができます。

設定オプションとして提供されない高度な PHP 設定、および PHP の設定の場合、[設定ファイルを使用して、Elastic Beanstalk により適用されるデフォルト設定を拡張および上書きできる `INI` ファイル](#php-configuration-phpini)の提供および追加拡張ができます。

Elastic Beanstalk コンソールで適用される設定は、設定ファイルに同じ設定があれば、それらの設定を上書きします。これにより、設定ファイルでデフォルト設定を定義し、コンソールでそのデフォルト設定を環境固有の設定で上書きできます。設定の優先順位の詳細と設定の他の変更方法については、「[設定オプション](command-options.md)」を参照してください。

Elastic Beanstalk Linux ベースのプラットフォームを拡張するさまざまな方法の詳細については、「[Elastic Beanstalk Linux プラットフォームの拡張](platforms-linux-extend.md)」を参照してください。

**Topics**
+ [AWS SDK for PHP のインストール](#php-development-environment-sdk)
+ [PHP 8.1 on Amazon Linux 2 に関する考慮事項](#php-8-1-considerations)
+ [PHP 環境の設定](#php-console)
+ [設定の名前空間](#php-namespaces)
+ [依存関係をインストールする](#php-configuration-composer)
+ [Composer の更新](#php-configuration-composerupdate)
+ [php.ini の拡張](#php-configuration-phpini)

## AWS SDK for PHP のインストール
<a name="php-development-environment-sdk"></a>

アプリケーション内から AWS リソースを管理する必要がある場合は、 をインストールします AWS SDK for PHP。例えば、SDK for PHP では、Amazon DynamoDB (DynamoDB) を使用して、リレーショナルデータベースを作成せずに、ユーザーとセッション情報を保存できます。

Composer で SDK for PHP をインストールするには

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

詳細については、[AWS SDK for PHP](https://aws.amazon.com/sdk-for-php/) ホームページを参照してください。手順については、「[AWS SDK for PHPのインストール](https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/getting-started_installation.html)」を参照してください。

## PHP 8.1 on Amazon Linux 2 に関する考慮事項
<a name="php-8-1-considerations"></a>

*PHP 8.1 on Amazon Linux 2* プラットフォームブランチを使用している場合は、このセクションをお読みください。

### PHP 8.1 on Amazon Linux 2 に関する考慮事項
<a name="php-8-1-considerations-detail"></a>

**注記**  
このトピックの情報は、*PHP 8.1 on Amazon Linux 2* プラットフォームブランチにのみ適用されます。AL2023 ベースの PHP プラットフォームブランチには適用されません。また、*PHP 8.0 Amazon Linux 2* プラットフォームブランチにも適用されません。

Elastic Beanstalk では、*PHP 8.1 on Amazon Linux 2* プラットフォームブランチの PHP 8.1 関連の RPM パッケージは、Amazon Linux ではなくローカルディレクトリの EC2 インスタンスに保存されます。**rpm -i ** を使用してパッケージをインストールできます。[PHP 8.1 プラットフォームバージョン 3.5.0](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-10-03-linux.html) 以降、Elastic Beanstalk は PHP 8.1 関連の RPM パッケージを次のローカル EC2 ディレクトリに保存します。

 `/opt/elasticbeanstalk/RPMS` 

次の例では、*php-debuginfo* パッケージをインストールします。

```
$rpm -i /opt/elasticbeanstalk/RPMS/php-debuginfo-8.1.8-1.amzn2.x86_64.rpm
```

パッケージ名のバージョンは、EC2 ローカルディレクトリ `/opt/elasticbeanstalk/RPMS` にリストされている実際のバージョンによって異なります。同じ構文を使用して、他の PHP 8.1 RPM パッケージをインストールします。

次のセクションを展開すると、提供されている RPM パッケージのリストが表示されます。

#### RPM パッケージ
<a name="php-8-1-considerations-detail-rpm-packages"></a>

次のリストは、Elastic Beanstalk PHP 8.1 プラットフォームが Amazon Linux 2 で提供する RMP パッケージを示しています。これらのファイルは、ローカルディレクトリ `/opt/elasticbeanstalk/RPMS` にあります。

記載されているパッケージ名のバージョン番号 *8.1.8-1* と *3.7.0-1* はあくまでも一例です。
+ `php-8.1.8-1.amzn2.x86_64.rpm`
+ `php-bcmath-8.1.8-1.amzn2.x86_64.rpm`
+ `php-cli-8.1.8-1.amzn2.x86_64.rpm`
+ `php-common-8.1.8-1.amzn2.x86_64.rpm`
+ `php-dba-8.1.8-1.amzn2.x86_64.rpm`
+ `php-dbg-8.1.8-1.amzn2.x86_64.rpm`
+ `php-debuginfo-8.1.8-1.amzn2.x86_64.rpm`
+ `php-devel-8.1.8-1.amzn2.x86_64.rpm`
+ `php-embedded-8.1.8-1.amzn2.x86_64.rpm`
+ `php-enchant-8.1.8-1.amzn2.x86_64.rpm`
+ `php-fpm-8.1.8-1.amzn2.x86_64.rpm`
+ `php-gd-8.1.8-1.amzn2.x86_64.rpm`
+ `php-gmp-8.1.8-1.amzn2.x86_64.rpm`
+ `php-intl-8.1.8-1.amzn2.x86_64.rpm`
+ `php-ldap-8.1.8-1.amzn2.x86_64.rpm`
+ `php-mbstring-8.1.8-1.amzn2.x86_64.rpm`
+ `php-mysqlnd-8.1.8-1.amzn2.x86_64.rpm`
+ `php-odbc-8.1.8-1.amzn2.x86_64.rpm`
+ `php-opcache-8.1.8-1.amzn2.x86_64.rpm`
+ `php-pdo-8.1.8-1.amzn2.x86_64.rpm`
+ `php-pear-1.10.13-1.amzn2.noarch.rpm`
+ `php-pgsql-8.1.8-1.amzn2.x86_64.rpm`
+ `php-process-8.1.8-1.amzn2.x86_64.rpm`
+ `php-pspell-8.1.8-1.amzn2.x86_64.rpm`
+ `php-snmp-8.1.8-1.amzn2.x86_64.rpm`
+ `php-soap-8.1.8-1.amzn2.x86_64.rpm`
+ `php-sodium-8.1.8-1.amzn2.x86_64.rpm`
+ `php-xml-8.1.8-1.amzn2.x86_64.rpm`
+ `php-pecl-imagick-3.7.0-1.amzn2.x86_64.rpm`
+ `php-pecl-imagick-debuginfo-3.7.0-1.amzn2.x86_64.rpm`
+ `php-pecl-imagick-devel-3.7.0-1.amzn2.noarch.rpm`

PEAR パッケージと PECL パッケージを使用して、一般的な拡張機能をインストールできます。PEAR の詳細については、[PEAR PHP 拡張機能とアプリケーションリポジトリ](https://pear.php.net)のウェブサイトを参照してください。PECL の詳細については、[PECL 拡張モジュール](https://pecl.php.net)のウェブサイトを参照してください。

以下のコマンド例では、Memcached 拡張機能をインストールします。

```
$pecl install memcache
```

また、以下のコマンドを使用することもできます。

```
$pear install pecl/memcache
```

以下のコマンド例では、Redis 拡張機能をインストールします。

```
$pecl install redis
```

また、以下のコマンドを使用することもできます。

```
$pear install pecl/redis
```

## PHP 環境の設定
<a name="php-console"></a>

Elastic Beanstalk コンソールでは、Amazon S3 のログローテーションを有効にしたり、アプリケーションが環境から読み取ることができる変数を設定したり、PHP 設定を変更することができます。

**Elastic Beanstalk コンソールで PHP 環境を設定するには**

1. [Elastic Beanstalk コンソール](https://console.aws.amazon.com/elasticbeanstalk)を開き、**リージョン**リストで を選択します AWS リージョン。

1. ナビゲーションペインで、[**環境**] を選択し、リストから環境の名前を選択します。

1. ナビゲーションペインで、[**設定**] を選択します。

1. **[更新、モニタリング、ログ]** の設定カテゴリで、**[編集]** を選択します。

### PHP 設定
<a name="php-console-settings"></a>
+ [**プロキシサーバー**] – 環境インスタンスで使用するプロキシサーバーです。デフォルトでは、nginx が使用されます。
+ **Document root (ドキュメントルート)** – サイトのデフォルトページを含むフォルダー。ウェルカムページが、出典バンドルのルートにない場合は、ルートパスに関連して、それを含むフォルダを指定します。たとえば、ウェルカムページが、`/public` というフォルダにある場合は、`public` にします。
+ **Memory limit (メモリ制限)** – スクリプトが割り当て許可される最大メモリ容量。例えば、`512M`。
+ **Zlib output compression (Zlib 出力の圧縮)** – `On` に設定して、レスポンスを圧縮します。
+ **Allow URL fopen (URL fopen を許可)** – `Off` に設定して、スクリプトがリモートの場所からファイルをダウンロードすることを防ぎます。
+ **Display errors (表示エラー)** – `On` に設定して、デバッグの内部エラーメッセージを表示します。
+ **Max execution time (最大実行時間)** – 環境によって終了されるまでの、スクリプトを実行許可される最大時間 (秒単位)。

### ログオプション
<a name="php-console-logs"></a>

[ログ Options] セクションには、2 つの設定があります。
+ [**Instance profile**] – アプリケーションに関連付けられた Amazon S3 バケットへのアクセス許可が付与されているインスタンスプロファイルを指定します。
+ **[Enable log file rotation to Amazon S3]** (Amazon S3 へのログファイルのローテーションの有効化) - アプリケーションの Amazon EC2 インスタンスのログファイルを、アプリケーションに関連付けられている Amazon S3 バケットにコピーするかどうかを指定します。

### 静的ファイル
<a name="php-console-staticfiles"></a>

パフォーマンスを向上させるために、**[Static files]** (静的ファイル) セクションを使用して、ウェブアプリケーション内のディレクトリセットから静的ファイル (HTML、イメージなど) を配信するようにプロキシサーバーを設定することができます。ディレクトリごとに、仮想パスをディレクトリマッピングに設定します。プロキシサーバーは、指定されたパスのファイルに対するリクエストを受け取ると、アプリケーションにリクエストをルーティングする代わりにファイルを直接　　処理します。

設定ファイルまたは、Elastic Beanstalk コンソールを使用した静的ファイルの設定の詳細については、「[静的ファイルの提供](environment-cfg-staticfiles.md)」を参照してください。

### 環境プロパティ
<a name="php-console-properties"></a>

**環境プロパティ** セクションでは、アプリケーションを実行している Amazon EC2 インスタンスの環境設定を指定できます。これらの設定は、キーバリューのペアでアプリケーションに渡されます。

アプリケーションコードは、`$_SERVER` または `get_cfg_var` 関数を使用して環境プロパティにアクセスできます。

```
$endpoint = $_SERVER['API_ENDPOINT'];
```

詳細については「[環境変数とその他のソフトウェアの設定](environments-cfg-softwaresettings.md)」を参照してください。

## 設定の名前空間
<a name="php-namespaces"></a>

[設定ファイル](ebextensions.md)を使用して、設定オプションを設定し、デプロイの間、他のインスタンス設定タスクをパフォーマンスできます。設定オプションは、[プラットフォーム固有](command-options-specific.md)のものでも、Elastic Beanstalk サービス全体の[すべてのプラットフォーム](command-options-general.md)に適用できるものでもかまいません。設定オプションは、*名前空間*に整理されています。

次の名前空間は、プロキシサービスと PHP 固有のオプションの両方を設定します。
+ [`aws:elasticbeanstalk:environment:proxy:staticfiles`](command-options-general.md#command-options-general-environmentproxystaticfiles) – 静的ファイルを提供するように環境プロキシを設定します。アプリケーションディレクトリへの仮想パスのマッピングを定義します。
+ [`aws:elasticbeanstalk:environment:proxy`](command-options-specific.md#command-options-php) – 環境のプロキシサーバーを指定します。
+ [`aws:elasticbeanstalk:container:php:phpini`](command-options-specific.md#command-options-php) – PHP 固有のオプションを設定します。この名前空間には、Elastic Beanstalk コンソールでは使用できない `composer_options` が含まれます。このオプションは、`composer.phar install` コマンドで Composer を使用して依存関係をインストールするときに使用するカスタムオプションを設定します。使用可能なオプションなど、このコマンドの詳細については、*getcomposer.org* ウェブサイトの「[インストール](https://getcomposer.org/doc/03-cli.md#install-i)」を参照してください。

次の[設定ファイル](ebextensions.md)の例では、`staticimages` という名前のディレクトリをパス `/images` にマップする静的ファイルオプションを指定し、`aws:elasticbeanstalk:container:php:phpini` 名前空間で使用できる各オプションの設定を示します。

**Example .ebextensions/php-settings.config**  

```
option_settings:
  aws:elasticbeanstalk:environment:proxy:
    ProxyServer: apache
  aws:elasticbeanstalk:environment:proxy:staticfiles:
    /images: staticimages
  aws:elasticbeanstalk:container:php:phpini:
    document_root: /public
    memory_limit: 128M
    zlib.output_compression: "Off"
    allow_url_fopen: "On"
    display_errors: "Off"
    max_execution_time: 60
    composer_options: vendor/package
```

**注記**  
`aws:elasticbeanstalk:environment:proxy:staticfiles` 名前空間は、Amazon Linux AMI PHP プラットフォームブランチ (Amazon Linux 2 以前) では定義されていません。

Elastic Beanstalk には、環境をカスタマイズするための多数の設定オプションが用意されています。設定ファイルに加えて、コンソール、保存された設定、EB CLI、または を使用して、設定オプションを指定することもできます AWS CLI詳細については「[設定オプション](command-options.md)」を参照してください。

## Elastic Beanstalk PHP アプリケーションの依存関係のインストール
<a name="php-configuration-composer"></a>

このトピックでは、必要な他の PHP パッケージをインストールするようにアプリケーションを設定する方法について説明します。アプリケーションは、他の PHP パッケージに依存関係がある可能性があります。環境の Amazon Elastic Compute Cloud (Amazon EC2) インスタンスにこれらの依存関係をインストールするようにアプリケーションを設定することができます。または、アプリケーションの依存関係を出典バンドルに含め、アプリケーションを用いてデプロイすることができます。このセクションでは、これら両方の方法について説明します。

### Composer ファイルを使用してインスタンスに依存関係をインストールする
<a name="php-configuration-composer.oninstances"></a>

プロジェクト出典のルートで `composer.json` ファイルを使用し、環境の Amazon EC2 インスタンスでアプリケーションに必要なパッケージを composer を使用してインストールします。

**Example composer.json**  

```
{
    "require": {
        "monolog/monolog": "1.0.*"
    }
}
```

`composer.json` ファイルがある場合、Elastic Beanstalk は `composer.phar install` を実行して依存関係をインストールします。`aws:elasticbeanstalk:container:php:phpini` 名前空間で [`composer_options` のオプション](#php-namespaces)を設定することにより、オプションを追加して、コマンドに追加できます。

### 出典バンドルに依存関係を含める
<a name="php-configuration-composer.inbundle"></a>

アプリケーションに多数の依存関係がある場合、インストールに長い時間がかかる場合があります。依存関係は新しいインスタンスにインストールされるため、これによりデプロイおよびスケーリング・オペレーションが増える可能性があります。

デプロイ時間に悪影響が発生しないようにするには、開発環境で Composer を使用して依存関係を解決し、`vendor` フォルダにインストールします。

**アプリケーション出典バンドルに依存関係を含めるには**

1. 次のコマンドを実行します。

   ```
   % composer install
   ```

1. 生成された `vendor` フォルダをアプリケーション出典バンドルのルートに含めます。

Elastic Beanstalk がインスタンスで `vendor` フォルダを検出した場合、`composer.json` ファイルは (存在する場合でも) 無視されます。アプリケーションは `vendor` フォルダから依存関係を使用します。

## Elastic Beanstalk での Composer の更新
<a name="php-configuration-composerupdate"></a>

このトピックでは、Composer を最新の状態に保つように Elastic Beanstalk を設定する方法について説明します。Composer ファイルを含むパッケージをインストールする際にエラーが表示される場合、または最新のプラットフォームバージョンを使用できない場合は、Composer を更新する必要がある場合があります。プラットフォーム更新の間に、[`.ebextensions`](ebextensions.md) フォルダの設定ファイルを使用して環境のインスタンスにある Composer を更新できます。

Composer は、次の設定で自己更新できます。

```
commands:
  01updateComposer:
    command: /usr/bin/composer.phar self-update {{2.7.0}}
```

次の[オプション設定](command-options-general.md#command-options-general-elasticbeanstalkapplicationenvironment)では、Composer キャッシュの場所を設定する `COMPOSER_HOME` 環境変数が設定されます。

```
option_settings:
  - namespace: aws:elasticbeanstalk:application:environment
    option_name: COMPOSER_HOME
    value: /home/webapp/composer-home
```

これらの両方を、`.ebextensions` フォルダ内の同じ設定ファイルに組み合わせることができます。

**Example .ebextensions/composer.config**  

```
commands:
  01updateComposer:
    command: /usr/bin/composer.phar self-update {{2.7.0}}
    
option_settings:
  - namespace: aws:elasticbeanstalk:application:environment
    option_name: COMPOSER_HOME
    value: /home/webapp/composer-home
```

**注記**  
[2024 年 2 月 22 日](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2024-02-22-al2023.html)の AL2023 プラットフォームリリースと [2024 年 2 月 28 日](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2024-02-28-al2.html)の AL2 プラットフォームリリースで Composer のインストールが更新されているため、自己更新の実行時に `COMPOSER_HOME` が設定されている場合、Composer の自己更新が失敗する可能性があります。  
次の組み合わせコマンドは実行に失敗します。`export COMPOSER_HOME=/home/webapp/composer-home && /usr/bin/composer.phar self-update 2.7.0`  
ただし、前の例は機能します。前の例では、`COMPOSER_HOME` のオプション設定は `01updateComposer` の実行に渡されず、自己更新コマンドの実行時に設定されません。

**重要**  
`composer.phar self-update` コマンドでバージョン番号を省略すると、Composer は出典コードをデプロイする際、および Auto Scaling によって新しいインスタンスがプロビジョニングされる際に毎回、利用可能な最新バージョンに更新されます。そのため、アプリケーションに対応しない Composer のバージョンがリリースされていると、スケーリング・オペレーションおよびデプロイが失敗する場合があります。

Composer のバージョンを含む Elastic Beanstalk PHP Platforms の詳細については、*AWS Elastic Beanstalk プラットフォーム*ドキュメントの「[PHP プラットフォームバージョン](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.PHP)」を参照してください。

## Elastic Beanstalk 設定での php.ini の拡張
<a name="php-configuration-phpini"></a>

`files` ブロックで設定ファイルを使用して、`.ini` ファイルを環境のインスタンスの `/etc/php.d/` に追加します。主要な設定ファイルの `php.ini` は、このフォルダにファイルの設定をアルファベット順に取得します。多くの拡張機能はこのフォルダのファイルによりデフォルトで有効になります。

**Example .ebextensions/mongo.config**  

```
files:
  "/etc/php.d/99mongo.ini":
    mode: "000755"
    owner: root
    group: root
    content: |
      extension=mongo.so
```