

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Utilizzo della piattaforma PHP di Elastic Beanstalk
<a name="create_deploy_PHP.container"></a>

AWS Elastic Beanstalk fornisce e supporta vari **rami della piattaforma** per diverse versioni di PHP. Le piattaforme supportano applicazioni web PHP che funzionano in modo autonomo o con Composer. Consulta [PHP](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.PHP) nel documento *AWS Elastic Beanstalk Piattaforme* per un elenco completo dei rami della piattaforma supportati.

Elastic [Beanstalk offre](command-options.md) opzioni di configurazione che puoi utilizzare per personalizzare il software in esecuzione sulle istanze Amazon EC2 nel tuo ambiente Elastic Beanstalk. È possibile [configurare le variabili di ambiente](environments-cfg-softwaresettings.md#environments-cfg-softwaresettings-console) necessarie per l'applicazione, abilitare la rotazione dei log su Amazon S3, mappare le cartelle nell'origine dell'applicazione che contengono i file statici sui percorsi serviti dal server proxy e configurare le impostazioni di inizializzazione PHP comuni.

Sono disponibili opzioni di configurazione specifiche della piattaforma nella console Elastic Beanstalk per la [modifica della configurazione di un ambiente in esecuzione](environment-configuration-methods-after.md). Per conservare la configurazione dell'ambiente una volta terminata, puoi utilizzare [configurazioni salvate](environment-configuration-savedconfig.md) per salvare le impostazioni e applicarle successivamente a un altro ambiente.

Per salvare le impostazioni nel codice sorgente, puoi includere i [file di configurazione](ebextensions.md). Le impostazioni nei file di configurazione vengono applicate ogni volta che crei un ambiente o distribuisci l'applicazione. Puoi inoltre utilizzare i file di configurazione per installare pacchetti, eseguire script o altre operazioni di personalizzazione delle istanze durante le distribuzioni.

Se utilizzi Composer, puoi [includere un file `composer.json`](#php-configuration-composer) nel bundle di origine per installare pacchetti durante la distribuzione.

Per la configurazione e le impostazioni avanzate di PHP che non vengono fornite come opzioni di configurazione, è possibile utilizzare i [file di configurazione per fornire un file `INI`](#php-configuration-phpini) che può estendere e ignorare le impostazioni di default applicate da Elastic Beanstalk o installare altre estensioni.

Le impostazioni applicate nella console Elastic Beanstalk sostituiscono le stesse impostazioni nei file di configurazione, se esistenti. Ciò ti consente di disporre di impostazioni predefinite nei file di configurazione, sostituibili con impostazioni specifiche per l'ambiente nella console. Per ulteriori informazioni sulla precedenza e altri metodi di modifica delle impostazioni, consulta [Opzioni di configurazione](command-options.md).

Per informazioni dettagliate sui vari modi in cui è possibile estendere una piattaforma Elastic Beanstalk basata su Linux, consulta [Estensione delle piattaforme Elastic Beanstalk Linux](platforms-linux-extend.md).

**Topics**
+ [Installazione dell' AWS SDK for PHP](#php-development-environment-sdk)
+ [Considerazioni per PHP 8.1 su Amazon Linux 2](#php-8-1-considerations)
+ [Configurazione dell'ambiente PHP](#php-console)
+ [Namespace per la configurazione](#php-namespaces)
+ [Installazione delle dipendenze](#php-configuration-composer)
+ [Aggiornamento di Composer](#php-configuration-composerupdate)
+ [Estensione di php.ini](#php-configuration-phpini)

## Installazione dell' AWS SDK for PHP
<a name="php-development-environment-sdk"></a>

Se devi gestire AWS le risorse dall'interno dell'applicazione, installa il. AWS SDK per PHP Ad esempio, con l'SDK for PHP, puoi utilizzare Amazon DynamoDB (DynamoDB) per archiviare le informazioni sulla sessione e sugli utenti senza creare un database relazionale.

Per installare l'SDK for PHP con Composer

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

Per ulteriori informazioni, consulta la home page. [AWS SDK for PHP](https://aws.amazon.com/sdk-for-php/) Per istruzioni, consulta [Installare il AWS SDK for PHP](https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/getting-started_installation.html).

## Considerazioni per PHP 8.1 su Amazon Linux 2
<a name="php-8-1-considerations"></a>

Leggi questa sezione se stai usando la ramificazione della piattaforma *PHP 8.1 su Amazon Linux 2*.

### Considerazioni per PHP 8.1 su Amazon Linux 2
<a name="php-8-1-considerations-detail"></a>

**Nota**  
Le informazioni contenute in questo argomento si applicano solo alle ramificazioni della piattaforma *PHP 8.1 basati su Amazon Linux 2*. Non si applica ai rami della piattaforma PHP basati su AL2023. Inoltre non si applica alla ramificazione della piattaforma *PHP 8.0 Amazon Linux 2*. 

Elastic Beanstalk memorizza i pacchetti RPM relativi a PHP 8.1 per la ramificazione della piattaforma *PHP 8.1 su Amazon Linux 2* sulle istanze EC2 in una directory locale, anziché nel repository Amazon Linux. È possibile utilizzare **rpm -i ** per installare pacchetti. A partire dalla [versione 3.5.0 della piattaforma PHP 8.1](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-10-03-linux.html), Elastic Beanstalk archivia i pacchetti RPM relativi a PHP 8.1 nella seguente directory EC2 locale.

 `/opt/elasticbeanstalk/RPMS` 

L'esempio seguente installa il pacchetto *php-debuginfo*.

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

La versione nel nome del pacchetto varierà in base alla versione effettiva elencata nella directory EC2 locale `/opt/elasticbeanstalk/RPMS`. Usa la stessa sintassi per installare altri pacchetti RPM PHP 8.1.

Espandi la sezione seguente per visualizzare un elenco dei pacchetti RPM che forniamo.

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

L'elenco seguente mostra i pacchetti RMP forniti dalla piattaforma PHP 8.1 Elastic Beanstalk su Amazon Linux 2. Questi si trovano nella directory locale `/opt/elasticbeanstalk/RPMS`.

I numeri di versione *8.1.8-1* e *3.7.0-1 * nei nomi dei pacchetti elencati rappresentano solo un esempio.
+ `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`

È possibile utilizzare i pacchetti PEAR e PECL per installare estensioni comuni. Per ulteriori informazioni su PEAR, consulta il sito web [PEAR PHP Extension and Application Repository](https://pear.php.net). Per ulteriori informazioni su PECL, consulta il sito Web [PECL extension](https://pecl.php.net).

I seguenti comandi di esempio installano le estensioni Memcached.

```
$pecl install memcache
```

Oppure puoi inoltre utilizzare quanto segue:

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

I seguenti comandi di esempio installano le estensioni Redis.

```
$pecl install redis
```

Oppure puoi inoltre utilizzare quanto segue:

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

## Configurazione dell'ambiente PHP
<a name="php-console"></a>

Puoi utilizzare la console Elastic Beanstalk per attivare la rotazione dei log in Amazon S3, configurare variabili che l'applicazione è in grado di leggere dall'ambiente e modificare le impostazioni PHP.

**Per configurare l'ambiente PHP nella console Elastic Beanstalk**

1. Apri la console [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) e, **nell'elenco Regioni, seleziona la tua**. Regione AWS

1. Nel pannello di navigazione selezionare **Environments** (Ambienti), quindi selezionare il nome dell'ambiente dall'elenco.

1. Nel riquadro di navigazione, seleziona **Configuration** (Configurazione).

1. Nella categoria di configurazione **Updates, monitoring, and logging** (Aggiornamenti, monitoraggio e registrazione), scegli **Edit** (Modifica).

### Impostazioni PHP
<a name="php-console-settings"></a>
+ **Proxy server (Server proxy)**: il server proxy da utilizzare nelle istanze dell'ambiente. Per impostazione predefinita, viene utilizzato nginx.
+ **Document root (Root del documento)**: la cartella che contiene la pagina predefinita del tuo sito. Se la pagina di benvenuto non è nella radice del bundle di origine, specifica la cartella che lo contiene rispetto al percorso principale. Ad esempio, `/public` se la pagina di benvenuto si trova in una cartella chiamata `public`.
+ **Memory limit (Limite di memoria)**: la quantità massima di memoria che uno script può allocare. Ad esempio, `512M`.
+ **Zlib output compression (Compressione Zlib dell'output)**: impostare su `On` per comprimere le risposte.
+ **Allow URL fopen (Consenti URL fopen)**: impostare su `Off` per evitare che gli script scarichino file da sedi remote.
+ **Display errors (Visualizza errori)**: impostare su `On` per visualizzare messaggi di errore interni per il debug.
+ **Max execution time (Tempo massimo di esecuzione)**: tempo massimo, espresso in secondi, durante il quale a uno script è consentita l'esecuzione prima di essere terminato dall'ambiente.

### Opzioni di log
<a name="php-console-logs"></a>

La sezione Log Options (Opzioni di log) ha due impostazioni:
+ **Instance profile (Profilo dell'istanza)**: specifica il profilo dell'istanza che dispone dell'autorizzazione ad accedere al bucket Amazon S3 associato all'applicazione.
+ **Enable log file rotation to Amazon S3** (Abilita rotazione file di log in Amazon S3): specifica se i file di log per le istanze Amazon EC2 dell'applicazione debbano essere copiati nel bucket Amazon S3 associato all'applicazione.

### File statici
<a name="php-console-staticfiles"></a>

Per migliorare le prestazioni, la sezione **Static files** (File statici) consente di configurare il server proxy affinché fornisca file statici (ad esempio, HTML o immagini) da un set di directory all'interno dell'applicazione Web. Per ogni directory, è possibile impostare il percorso virtuale per la mappatura delle directory. Quando il server proxy riceve una richiesta da un file nel percorso specificato, questo serve il file direttamente anziché instradare la richiesta all'applicazione.

Per informazioni dettagliate sulla configurazione di file statici utilizzando file di configurazione o la console Elastic Beanstalk, consulta [Fornire i file statici](environment-cfg-staticfiles.md).

### Proprietà dell'ambiente
<a name="php-console-properties"></a>

La sezione **Environment Properties (Proprietà ambiente)** consente di specificare le impostazioni di configurazione dell'ambiente nelle istanze Amazon EC2 che eseguono l'applicazione. Queste impostazioni sono passate come coppie chiave-valore all'applicazione. 

Il codice dell'applicazione può accedere alle proprietà dell'ambiente utilizzando `$_SERVER` o la funzione `get_cfg_var`.

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

Per ulteriori informazioni, consultare [Variabili di ambiente e altre impostazioni software](environments-cfg-softwaresettings.md).

## Namespace per la configurazione
<a name="php-namespaces"></a>

È possibile utilizzare un [file di configurazione](ebextensions.md) per impostare le opzioni di configurazione ed eseguire alte attività di configurazione delle istanze durante le distribuzioni. Le opzioni di configurazione possono essere [specifiche della piattaforma](command-options-specific.md) o essere applicate a [tutte le piattaforme](command-options-general.md) del servizio Elastic Beanstalk nel suo complesso. *Le opzioni di configurazione sono organizzate in namespace.*

I seguenti namespace configurano sia il servizio proxy che le opzioni specifiche di PHP:
+ [`aws:elasticbeanstalk:environment:proxy:staticfiles`](command-options-general.md#command-options-general-environmentproxystaticfiles)— configura il proxy dell'ambiente per servire file statici. È possibile definire i mapping dei percorsi virtuali alle directory dell'applicazione.
+ [`aws:elasticbeanstalk:environment:proxy`](command-options-specific.md#command-options-php)— specificare il server proxy dell'ambiente. 
+ [`aws:elasticbeanstalk:container:php:phpini`](command-options-specific.md#command-options-php)— configura le opzioni specifiche di PHP. Questo spazio dei nomi include`composer_options`, che non è disponibile nella console Elastic Beanstalk. Questa opzione imposta le opzioni personalizzate da utilizzare durante l'installazione delle dipendenze utilizzando Composer tramite il comando. `composer.phar install` Per ulteriori informazioni su questo comando, incluse le opzioni disponibili, vedete [install](https://getcomposer.org/doc/03-cli.md#install-i) sul sito *getcomposer.org*.

Il seguente [file di configurazione](ebextensions.md) di esempio specifica un'opzione di file statici che esegue il mapping di una directory denominata `staticimages` al percorso `/images` e mostra le impostazioni per ciascuna delle opzioni disponibili nello spazio dei nomi `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
```

**Nota**  
Lo spazio dei nomi `aws:elasticbeanstalk:environment:proxy:staticfiles` non è definito sui rami della piattaforma PHP AMI Amazon Linux (precedente Amazon Linux 2).

In Elastic Beanstalk sono disponibili varie opzioni di configurazione per la personalizzazione dell'ambiente. Oltre ai file di configurazione, puoi impostare le opzioni di configurazione tramite la console, le configurazioni salvate, la CLI EB o AWS CLI. Per ulteriori informazioni, consulta [Opzioni di configurazione](command-options.md).

## Installazione delle dipendenze dell'applicazione PHP Elastic Beanstalk
<a name="php-configuration-composer"></a>

Questo argomento descrive come configurare l'applicazione per installare altri pacchetti PHP necessari. L'applicazione potrebbe avere delle dipendenze da altri pacchetti PHP. È possibile configurare l'applicazione per installare queste dipendenze nelle istanze Amazon Elastic Compute Cloud (Amazon EC2) dell'ambiente. In alternativa, è possibile includere le dipendenze dell'applicazione nel bundle di origine e distribuirle con l'applicazione. Nella sezione seguente vengono illustrati entrambi i metodi.

### Utilizzo di un file Composer per installare le dipendenze sulle istanze
<a name="php-configuration-composer.oninstances"></a>

Utilizza un file `composer.json` nella radice dell'origine del progetto per utilizzare Composer per installare i pacchetti di cui l'applicazione ha bisogno sulle istanze Amazon EC2 dell'ambiente.

**Example composer.json**  

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

Quando è presente un file `composer.json`, Elastic Beanstalk esegue `composer.phar install` per installare le dipendenze. È possibile aggiungere opzioni al comando impostando l'opzione [`composer_options`](#php-namespaces) nello spazio dei nomi `aws:elasticbeanstalk:container:php:phpini`.

### Inclusione delle dipendenze nel bundle di origine
<a name="php-configuration-composer.inbundle"></a>

Se l'applicazione ha un numero elevato di dipendenze, installarle potrebbe richiedere molto tempo. Ciò può aumentare le operazioni di distribuzione e dimensionamento, poiché le dipendenze vengono installate in ogni nuova istanza.

Per evitare che ciò influisca negativamente sui tempi di installazione, utilizza Composer nel tuo ambiente di sviluppo per risolvere le dipendenze e installarle nella cartella `vendor`.

**Come includere dipendenze nel tuo bundle di origine dell'applicazione**

1. Esegui il comando seguente:

   ```
   % composer install
   ```

1. Includi la cartella `vendor` generata nella radice del bundle di origine dell'applicazione.

Quando Elastic Beanstalk individua una cartella `vendor` sull'istanza, ignora il file `composer.json` (anche se esiste). L'applicazione usa quindi le dipendenze dalla cartella `vendor`.

## Aggiornamento di Composer su Elastic Beanstalk
<a name="php-configuration-composerupdate"></a>

Questo argomento descrive come configurare Elastic Beanstalk per mantenere aggiornato Composer. Potrebbe essere necessario aggiornare Composer se viene visualizzato un errore quando si tenta di installare pacchetti con un file Composer o se non si riesce a utilizzare la versione più recente della piattaforma. Tra un aggiornamento della piattaforma e l'altro, puoi aggiornare Composer nelle istanze del tuo ambiente utilizzando i file di configurazione nella tua cartella. [`.ebextensions`](ebextensions.md)

È possibile aggiornare automaticamente Composer con la seguente configurazione.

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

La seguente [impostazione dell'opzione](command-options-general.md#command-options-general-elasticbeanstalkapplicationenvironment) imposta la variabile di `COMPOSER_HOME` ambiente, che configura la posizione della cache di Composer.

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

Puoi combinarli entrambi nello stesso file di configurazione nella tua `.ebextensions` cartella.

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

**Nota**  
A causa degli aggiornamenti all'installazione di Composer nella versione della piattaforma del [22 febbraio 2024](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2024-02-22-al2023.html) e nella versione della AL2023 piattaforma del [28 febbraio 2024,](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2024-02-28-al2.html) AL2 l'aggiornamento automatico di Composer potrebbe non riuscire se `COMPOSER_HOME` impostato al momento dell'esecuzione dell'aggiornamento automatico.   
I seguenti comandi combinati non verranno eseguiti: `export COMPOSER_HOME=/home/webapp/composer-home && /usr/bin/composer.phar self-update 2.7.0`   
Tuttavia, l'esempio precedente funzionerà. Nell'esempio precedente, l'impostazione dell'opzione for non `COMPOSER_HOME` verrà passata all'`01updateComposer`esecuzione e non verrà impostata durante l'esecuzione del comando di aggiornamento automatico.

**Importante**  
Se ometti il numero di versione dal comando `composer.phar self-update`, Composer verrà aggiornato all'ultima versione disponibile ogni volta che distribuisci il codice sorgente e quando le nuove istanze vengono assegnate da Auto Scaling. Questo potrebbe causare il fallimento del dimensionamento di operazioni e distribuzioni se viene rilasciata una versione di Composer non compatibile con la tua applicazione.

Per ulteriori informazioni sulle piattaforme PHP di Elastic Beanstalk, inclusa la versione di Composer, consultare [le versioni della piattaforma PHP](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.PHP) nel documento * Piattaforme AWS Elastic Beanstalk *.

## Estendere php.ini nella configurazione di Elastic Beanstalk
<a name="php-configuration-phpini"></a>

Utilizza un file di configurazione con un blocco `files` da aggiungere a un file `.ini` per `/etc/php.d/` sulle istanze nel tuo ambiente. Il file di configurazione principale, `php.ini`, preleva le impostazioni dai file in questa cartella in ordine alfabetico. Molte estensioni sono abilitate per impostazione predefinita dai file in questa cartella.

**Example .ebextensions/mongo.config**  

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