

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Utilisation de la plateforme PHP Elastic Beanstalk
<a name="create_deploy_PHP.container"></a>

AWS Elastic Beanstalk fournit et prend en charge diverses **branches de plate-forme** pour différentes versions de PHP. Les plateformes prennent en charge les applications Web PHP qui s'exécutent de manière autonome ou sous Composer. Voir [PHP](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.PHP) dans le document *AWS Elastic Beanstalk Platforms* pour une liste complète des branches de plateforme prises en charge.

Elastic [Beanstalk propose](command-options.md) des options de configuration que vous pouvez utiliser pour personnaliser le logiciel qui s'exécute sur les instances Amazon EC2 de votre environnement Elastic Beanstalk. Vous pouvez [configurer les variables d'environnement](environments-cfg-softwaresettings.md#environments-cfg-softwaresettings-console) requises par votre application, activer la rotation des journaux sur Amazon S3, mapper les dossiers de la source de votre application contenant les fichiers statiques avec les chemins desservis par le serveur proxy, et définir les paramètres d'initialisation PHP communs.

Des options de configuration sont disponibles dans la console Elastic Beanstalk pour [modifier la configuration d'un environnement en cours d'exécution](environment-configuration-methods-after.md). Pour éviter de perdre la configuration de votre environnement en le résiliant, vous pouvez utiliser des [configurations enregistrées](environment-configuration-savedconfig.md) pour enregistrer vos paramètres et les appliquer par la suite à un autre environnement.

Pour enregistrer les paramètres dans votre code source, vous pouvez inclure des [fichiers de configuration](ebextensions.md). Les paramètres des fichiers de configuration sont appliquées chaque fois que vous créez un environnement ou que vous déployez votre application. Vous pouvez également utiliser des fichiers de configuration pour installer des packages, exécuter des scripts ou effectuer d'autres opérations de personnalisation d'instance lors des déploiements.

Si vous utilisez Composer, vous pouvez [inclure un fichier`composer.json`](#php-configuration-composer) dans votre bundle source afin d'installer des packages pendant le déploiement.

Pour des paramètres avancés PHP et de configuration PHP non fournis en tant qu'options de configuration, vous pouvez [utiliser des fichiers de configuration pour fournir un fichier `INI`](#php-configuration-phpini) qui peut étendre et remplacer les paramètres par défaut appliqués par Elastic Beanstalk, ou installer des extensions supplémentaires.

Les paramètres appliqués dans la console Elastic Beanstalk remplacent les mêmes paramètres des fichiers de configuration, s'ils existent. Cela vous permet d'utiliser les paramètres par défaut dans les fichiers de configuration et de les remplacer par des paramètres spécifiques à l'environnement dans la console. Pour plus d'informations sur la priorité et les autres méthodes de modification des paramètres, consultez [Options de configuration](command-options.md).

Pour plus d'informations sur les différentes manières d'étendre une plateforme Elastic Beanstalk basée sur Linux, consultez [Extension des plateformes Linux Elastic Beanstalk](platforms-linux-extend.md).

**Topics**
+ [Installation du AWS SDK pour PHP](#php-development-environment-sdk)
+ [Considérations relatives à PHP 8.1 sur Amazon Linux 2](#php-8-1-considerations)
+ [Configuration de votre environnement PHP](#php-console)
+ [Espaces de noms pour la configuration](#php-namespaces)
+ [Installation des dépendances](#php-configuration-composer)
+ [Mise à jour de Composer](#php-configuration-composerupdate)
+ [Extension de php.ini](#php-configuration-phpini)

## Installation du AWS SDK pour PHP
<a name="php-development-environment-sdk"></a>

Si vous devez gérer AWS des ressources depuis votre application, installez le AWS SDK pour PHP. Par exemple, avec le kit SDK pour PHP, vous pouvez utiliser Amazon DynamoDB (DynamoDB) pour stocker les informations relatives à l'utilisateur et à la session sans créer de base de données relationnelle.

Pour installer le SDK pour PHP avec Composer

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

Pour plus d'informations, consultez la [AWS SDK for PHP](https://aws.amazon.com/sdk-for-php/)page d'accueil. Pour obtenir des instructions, voir [Installer le AWS SDK for PHP](https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/getting-started_installation.html).

## Considérations relatives à PHP 8.1 sur Amazon Linux 2
<a name="php-8-1-considerations"></a>

Veuillez lire cette section si vous utilisez la branche de plateforme *PHP 8.1 sur Amazon Linux 2*.

### Considérations relatives à PHP 8.1 sur Amazon Linux 2
<a name="php-8-1-considerations-detail"></a>

**Note**  
Les informations de cette rubrique s'appliquent uniquement à la branche de plateforme *PHP 8.1 sur Amazon Linux 2*. Cela ne s'applique pas aux branches de la plateforme PHP basées sur AL2023. Elles ne s'appliquent pas non plus à la branche de plateforme *PHP 8.0 Amazon Linux 2*. 

Elastic Beanstalk stocke les packages RPM associés à PHP 8.1 pour la branche de plateforme *PHP 8.1 sur Amazon Linux 2* sur les instances EC2 dans un répertoire local, au lieu du référentiel Amazon Linux. Vous pouvez utiliser **rpm -i ** afin d'installer des packages. À partir de la [version 3.5.0 de la plateforme PHP 8.1](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-10-03-linux.html), Elastic Beanstalk stocke les packages RPM associés à PHP 8.1 dans le répertoire EC2 local suivant.

 `/opt/elasticbeanstalk/RPMS` 

L'exemple suivant permet d'installer le package *php-debuginfo*.

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

La version dans le nom du package varie en fonction de celle répertoriée dans le répertoire local EC2 `/opt/elasticbeanstalk/RPMS`. Utilisez la même syntaxe afin d'installer d'autres packages RPM PHP 8.1.

Développez la section suivante afin d'afficher une liste des packages RPM que nous fournissons.

#### Packages RPM
<a name="php-8-1-considerations-detail-rpm-packages"></a>

La liste suivante présente les packages RMP fournis par la plateforme PHP 8.1 Elastic Beanstalk sur Amazon Linux 2. Ils se situent dans le répertoire local `/opt/elasticbeanstalk/RPMS`.

Les numéros de version *8.1.8-1* et *3.7.0-1* figurant dans les noms de packages listés ne sont qu'un exemple.
+ `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`

Vous pouvez utiliser les packages PEAR et PECL afin d'installer des extensions courantes. Pour plus d'informations sur PEAR, veuillez consulter le site Web [PEAR - PHP Extension and Application Repository](https://pear.php.net) (PEAR : référentiel d'applications et extension PHP) (français non garanti). Pour plus d'informations sur PECL, veuillez consulter le site Web de [PECL extension](https://pecl.php.net) (L'extension PECL) (français non garanti).

Les exemples de commandes suivants permettent d'installer les extensions Memcached.

```
$pecl install memcache
```

Vous pouvez également utiliser ce qui suit :

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

Les exemples de commandes suivants permettent d'installer les extensions Redis.

```
$pecl install redis
```

Vous pouvez également utiliser ce qui suit :

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

## Configuration de votre environnement PHP
<a name="php-console"></a>

Vous pouvez utiliser la console Elastic Beanstalk pour activer la rotation de journal sur Amazon S3, configurer des variables que votre application peut lire depuis l'environnement et modifier des paramètres PHP.

**Pour configurer votre environnement PHP dans la console Elastic Beanstalk**

1. Ouvrez la console [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk), puis **dans la liste des régions, sélectionnez votre**. Région AWS

1. Dans le panneau de navigation, choisissez **Environments** (Environnements), puis choisissez le nom de votre environnement dans la liste.

1. Dans le panneau de navigation, choisissez **Configuration**.

1. Dans la catégorie de configuration **Mises à jour, surveillance et journalisation**, sélectionnez **Modifier**.

### Paramètres PHP
<a name="php-console-settings"></a>
+ **Proxy server (Serveur proxy)** – Serveur proxy à utiliser sur vos instances d'environnement. Le serveur nginx est utilisé par défaut.
+ **Racine du document** – Dossier qui contient la page par défaut de votre site. Si votre page d'accueil n'est pas à la racine de votre groupe source, spécifiez le dossier qui la contient par rapport aux chemin d'accès racine. Par exemple, `/public` si la page d'accueil est dans un dossier nommé `public`.
+ **Limite de mémoire** – Volume maximum de mémoire qu'un script est autorisé à allouer. Par exemple, `512M`.
+ **Compression de sortie Zlib** – Définissez sur `On` pour compresser les réponses.
+ **Permettre de faire un fopen d'une URL** – Définissez cette option sur `Off` pour empêcher les scripts de télécharger des fichiers à partir d'emplacements distants.
+ **Afficher les erreurs** – Définissez cette option sur `On` pour afficher les messages d'erreur internes à des fins de débogage.
+ **Durée d'exécution maximum** – La durée maximale en secondes pendant laquelle un script est autorisé à s'exécuter avant que l'environnement ne l'arrête.

### Options du journal
<a name="php-console-logs"></a>

La section Options du journal a deux paramètres :
+ **Instance profile (Profil d'instance)** – Spécifie le profil d'instance qui est autorisé à accéder au compartiment Amazon S3 associé à votre application.
+ **Enable log file rotation to Amazon S3** (Permettre la rotation du fichier journal sur Amazon S3) – Indique si les fichiers journaux des instances Amazon EC2 de votre application doivent être copiés dans le compartiment Amazon S3 associé à votre application.

### Fichiers statiques
<a name="php-console-staticfiles"></a>

Pour améliorer les performances, la section des **Fichiers statiques** vous permet de configurer le serveur proxy pour proposer des fichiers statiques (HTML ou images, par exemple) à partir d'un ensemble de répertoires dans votre application web. Pour chaque répertoire, vous définissez le chemin virtuel sur le mappage de répertoires. Lorsque le serveur proxy reçoit une demande pour un fichier dans le chemin spécifié, il fournit le fichier directement au lieu d'acheminer la demande vers votre application.

Pour en savoir plus sur la configuration des fichiers statiques à l'aide des fichiers de configuration ou de la console Elastic Beanstalk, consultez [Service de fichiers statiques](environment-cfg-staticfiles.md).

### Propriétés de l'environnement
<a name="php-console-properties"></a>

La section **Propriétés de l'environnement** vous permet de spécifier des paramètres de configuration de l'environnement sur les instances Amazon EC2 exécutant votre application. Ces paramètres sont passés en tant que paires clé-valeur à l'application. 

Votre code d'application peut accéder aux propriétés de l'environnement à l'aide de `$_SERVER` ou à la fonction `get_cfg_var`.

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

Pour plus d’informations, consultez [Variables d'environnement et autres paramètres du logiciel](environments-cfg-softwaresettings.md).

## Espaces de noms pour la configuration
<a name="php-namespaces"></a>

Vous pouvez utiliser un [fichier de configuration](ebextensions.md) pour définir des options de configuration et exécuter d'autres tâches de configuration d'instance pendant les déploiements. Les options de configuration peuvent être [spécifiques à la plate-forme](command-options-specific.md) ou s'appliquer à [toutes les plateformes](command-options-general.md) du service Elastic Beanstalk dans son ensemble. Les options de configuration sont organisées en *espaces de noms.*

Les espaces de noms suivants configurent à la fois votre service proxy et les options spécifiques à PHP :
+ [`aws:elasticbeanstalk:environment:proxy:staticfiles`](command-options-general.md#command-options-general-environmentproxystaticfiles)— configurez le proxy d'environnement pour servir les fichiers statiques. Vous définissez les mappages des chemins virtuels vers les répertoires d'applications.
+ [`aws:elasticbeanstalk:environment:proxy`](command-options-specific.md#command-options-php)— spécifiez le serveur proxy de l'environnement. 
+ [`aws:elasticbeanstalk:container:php:phpini`](command-options-specific.md#command-options-php)— configure les options spécifiques à PHP. Cet espace de noms inclut `composer_options` ce qui n'est pas disponible sur la console Elastic Beanstalk. Cette option définit les options personnalisées à utiliser lors de l'installation de dépendances à l'aide de Composer via la `composer.phar install` commande. Pour plus d'informations sur cette commande, y compris les options disponibles, consultez la section [installation](https://getcomposer.org/doc/03-cli.md#install-i) sur le site Web *getcomposer.org*.

L'exemple de [fichier de configuration](ebextensions.md) suivant spécifie une option de fichiers statiques qui mappe un répertoire nommé `staticimages` au chemin `/images`, d'accès et affiche les paramètres de chacune des options disponibles dans l'espace de noms `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
```

**Note**  
L'espace de noms `aws:elasticbeanstalk:environment:proxy:staticfiles` n'est pas défini sur les branches PHP de l'AMI Amazon Linux (précédant Amazon Linux 2).

Elastic Beanstalk fournit de nombreuses options de configuration pour personnaliser votre environnement. En plus des fichiers de configuration, vous pouvez également définir des options de configuration à l'aide de la console, de configurations enregistrées, de la CLI EB ou d' AWS CLI. Pour plus d’informations, consultez [Options de configuration](command-options.md).

## Installation des dépendances de votre application PHP Elastic Beanstalk
<a name="php-configuration-composer"></a>

Cette rubrique décrit comment configurer votre application pour installer les autres packages PHP dont elle a besoin. Votre application peut avoir des dépendances sur d'autres packages PHP. Vous pouvez configurer votre application pour installer ces dépendances sur les instances Amazon Elastic Compute Cloud (Amazon EC2) de l'environnement. Vous pouvez également inclure les dépendances de votre application dans le bundle source et les déployer avec l'application. La section ci-après décrit chacune de ces méthodes.

### Utilisation d'un fichier Composer pour installer des dépendances sur les instances
<a name="php-configuration-composer.oninstances"></a>

Utilisez un fichier `composer.json` à la racine de votre source de projet afin d'utiliser Composer pour installer les packages dont votre application a besoin sur les instances Amazon EC2 de votre environnement.

**Example composer.json**  

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

Lorsqu'un fichier `composer.json` est présent, Elastic Beanstalk exécute `composer.phar install` pour installer les dépendances. Vous pouvez ajouter des options à joindre à la commande en définissant l'option [`composer_options`](#php-namespaces) dans l'espace de noms `aws:elasticbeanstalk:container:php:phpini`.

### Inclusion des dépendances dans la solution groupée source
<a name="php-configuration-composer.inbundle"></a>

Si votre application possède un grand nombre de dépendances, leur installation peut prendre beaucoup de temps. Il peut en résulter un nombre accru d'opérations de déploiement et de mise à l'échelle, car les dépendances sont installées sur chaque nouvelle instance.

Pour éviter d'accroître le temps de déploiement, utilisez Composer dans votre environnement de développement afin de résoudre les dépendances et de les installer dans le dossier `vendor`.

**Pour inclure des dépendances dans le bundle source de votre application**

1. Exécutez la commande suivante :

   ```
   % composer install
   ```

1. Incluez le dossier `vendor` généré dans la racine du bundle source de votre application.

Lorsque Elastic Beanstalk trouve un dossier `vendor` sur l'instance, il ignore le fichier `composer.json` (même s'il existe). Votre application utilise alors les dépendances issues du dossier `vendor`.

## Mettre à jour Composer sur Elastic Beanstalk
<a name="php-configuration-composerupdate"></a>

Cette rubrique décrit comment configurer Elastic Beanstalk pour maintenir Composer à jour. Vous devrez peut-être mettre à jour Composer si un message d'erreur s'affiche lorsque vous essayez d'installer des packages avec un fichier Composer, ou si vous ne parvenez pas à utiliser la dernière version de la plateforme. Entre les mises à jour de la plateforme, vous pouvez mettre à jour Composer dans les instances de votre environnement en utilisant les fichiers de configuration de votre [`.ebextensions`](ebextensions.md)dossier.

Vous pouvez mettre à jour automatiquement Composer avec la configuration suivante.

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

Le [paramètre d'option](command-options-general.md#command-options-general-elasticbeanstalkapplicationenvironment) suivant définit la variable d'`COMPOSER_HOME`environnement, qui configure l'emplacement du cache Composer.

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

Vous pouvez combiner les deux dans le même fichier de configuration de votre `.ebextensions` dossier.

**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
```

**Note**  
En raison des mises à jour apportées à l'installation de Composer dans les versions de AL2023 plateforme du [22 février 2024](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2024-02-22-al2023.html) et du [28 février 2024,](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2024-02-28-al2.html) AL2 la mise à jour automatique de Composer peut échouer si elle `COMPOSER_HOME` est définie au moment de l'exécution de la mise à jour automatique.   
Les commandes combinées suivantes ne pourront pas être exécutées : `export COMPOSER_HOME=/home/webapp/composer-home && /usr/bin/composer.phar self-update 2.7.0`   
Cependant, l'exemple précédent fonctionnera. Dans l'exemple précédent, le paramètre d'option pour ne `COMPOSER_HOME` sera pas transmis à l'`01updateComposer`exécution, et il ne sera pas défini lors de l'exécution de la commande de mise à jour automatique.

**Important**  
Si vous n'indiquez pas le numéro de version dans la commande `composer.phar self-update`, Composer met à jour vers la dernière version disponible chaque fois que vous déployez votre code source et que de nouvelles instances sont provisionnées par Auto Scaling. Si une version de Composer est disponible qui est incompatible avec votre application, elle peut provoquer l'échec des opérations de dimensionnement et des déploiements.

Pour plus d'informations sur les plateformes PHP Elastic Beanstalk, ainsi que sur la version de Composer, consultez la section [Versions des plateformes PHP](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.PHP) du document *Plateformes AWS Elastic Beanstalk *.

## Extension du fichier php.ini dans votre configuration Elastic Beanstalk
<a name="php-configuration-phpini"></a>

Utilisez un fichier de configuration avec un bloc `files` pour ajouter un fichier `.ini` à `/etc/php.d/` sur les instances de votre environnement. Le fichier de configuration principal, `php.ini`, recherche des paramètres dans des fichiers dans ce dossier dans l'ordre alphabétique. De nombreuses extensions sont activées par défaut par les fichiers dans ce dossier.

**Example .ebextensions/mongo.config**  

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