

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Usar a plataforma PHP do Elastic Beanstalk
<a name="create_deploy_PHP.container"></a>

AWS Elastic Beanstalk fornece e suporta várias **ramificações de plataforma** para diferentes versões do PHP. As plataformas são compatíveis com aplicações web PHP que funcionam de forma independente ou sob o Composer. Consulte [PHP](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.PHP) no documento *Plataformas do AWS Elastic Beanstalk * para uma lista completa de ramificações de plataforma compatíveis.

O Elastic Beanstalk fornece [opções de configuração](command-options.md) que podem ser usadas para personalizar o software que é executado nas instâncias do Amazon EC2 no ambiente do Elastic Beanstalk. É possível [configurar as variáveis de ambiente](environments-cfg-softwaresettings.md#environments-cfg-softwaresettings-console) necessárias à sua aplicação, habilitar a alternância de log para o Amazon S3, mapear pastas na origem da aplicação que contenham arquivos estáticos para caminhos servidos pelo servidor de proxy e definir configurações de inicialização comuns do PHP.

As opções de configuração estão disponíveis no console do Elastic Beanstalk para [modificar a configuração de um ambiente em execução](environment-configuration-methods-after.md). Para evitar a perda da configuração do ambiente quando você terminá-la, você pode usar [configurações salvas](environment-configuration-savedconfig.md) para salvar as configurações e depois aplicá-las a outro ambiente.

Para salvar as configurações no código-fonte, você pode incluir [arquivos de configuração](ebextensions.md). As definições em arquivos de configuração são aplicadas sempre que você cria um ambiente ou implementa a aplicação. Você também pode usar arquivos de configuração para instalar pacotes, executar scripts e realizar outras operações de personalização da instância em implantações.

Se você usa o Composer, pode [incluir um arquivo `composer.json`](#php-configuration-composer) em seu pacote de origem para instalar pacotes durante a implantação.

Para configuração avançada de PHP e definições de PHP que não são fornecidos como opções de configuração, é possível [usar arquivos de configuração para fornecer um arquivo `INI`](#php-configuration-phpini)que pode estender e substituir as configurações padrão aplicadas pelo Elastic Beanstalk ou instalar extensões adicionais.

As configurações aplicadas no console do Elastic Beanstalk substituem as mesmas configurações em arquivos de configuração, caso elas existam. Isso permite que você tenha configurações padrão em arquivos de configuração e as substitua por configurações específicas de ambiente no console. Para obter mais informações sobre precedência e outros métodos de alteração das configurações, consulte [Opções de configuração](command-options.md).

Para obter detalhes sobre as várias maneiras de estender uma plataforma do Elastic Beanstalk baseada em Linux, consulte [Estender as plataformas Linux do Elastic Beanstalk](platforms-linux-extend.md).

**Topics**
+ [Instalando o AWS SDK for PHP](#php-development-environment-sdk)
+ [Considerações sobre o PHP 8.1 no Amazon Linux 2](#php-8-1-considerations)
+ [Configurar seu ambiente PHP](#php-console)
+ [Namespaces para configuração](#php-namespaces)
+ [Instalar as dependências](#php-configuration-composer)
+ [Atualização do Composer](#php-configuration-composerupdate)
+ [Como estender o php.ini](#php-configuration-phpini)

## Instalando o AWS SDK for PHP
<a name="php-development-environment-sdk"></a>

Se você precisar gerenciar AWS recursos de dentro do seu aplicativo, instale AWS SDK para PHP o. Por exemplo, com o SDK for PHP, é possível usar o Amazon DynamoDB (DynamoDB) para armazenar informações de usuário e sessão sem criar um banco de dados relacional.

Para instalar o SDK for PHP com o Composer

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

Para obter mais informações, consulte a página inicial do [AWS SDK for PHP](https://aws.amazon.com/sdk-for-php/). Para obter instruções, consulte [Instalar o AWS SDK for PHP](https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/getting-started_installation.html).

## Considerações sobre o PHP 8.1 no Amazon Linux 2
<a name="php-8-1-considerations"></a>

Leia esta seção se você estiver usando a *ramificação da plataforma PHP 8.1 no Amazon Linux 2*.

### Considerações sobre o PHP 8.1 no Amazon Linux 2
<a name="php-8-1-considerations-detail"></a>

**nota**  
As informações neste tópico somente são aplicáveis a ramificações de plataforma *PHP 8.1 no Amazon Linux 2*. Não se aplica às ramificações da plataforma PHP com base em AL2023. Também não se aplica ao*PHP 8.0 Amazon Linux 2*filial da plataforma. 

O Elastic Beanstalk armazena os pacotes RPM relacionados ao PHP 8.1 para o*PHP 8.1 no Amazon Linux 2*ramificação da plataforma nas instâncias do EC2 em um diretório local, em vez do repositório Amazon Linux. Você pode usar **rpm -i ** para instalar os pacotes necessários. A partir da [versão 3.5.0 da plataforma PHP 8.1](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-10-03-linux.html), o Elastic Beanstalk armazena os pacotes RPM relacionados à PHP 8.1 no diretório local do EC2 a seguir.

 `/opt/elasticbeanstalk/RPMS` 

O exemplo a seguir instala o pacote *php-debuginfo*.

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

A versão no nome do pacote variará de acordo com a versão real listada no diretório local do EC2 `/opt/elasticbeanstalk/RPMS`. Use a mesma sintaxe para instalar outros pacotes RPM da plataforma PHP 8.1.

Expanda a seção a seguir para exibir uma lista dos pacotes RPM que fornecemos.

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

A lista a seguir fornece os pacotes RMP que a plataforma PHP 8.1 do Elastic Beanstalk fornece no Amazon Linux 2. Eles ficam localizados no diretório local `/opt/elasticbeanstalk/RPMS`.

Os números de versão *8.1.8-1* e *3.7.0-1* nos nomes dos pacotes listados são apenas um exemplo.
+ `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`

Você pode usar os pacotes PEAR e PECL para instalar extensões comuns. Para obter mais informações sobre o PEAR, consulte o site [PEAR PHP Extension and Application Repository](https://pear.php.net) (Repositório de extensão e aplicação do PEAR PHP). Para obter mais informações sobre o PECL, consulte o site de [extensões PECL](https://pecl.php.net).

Os exemplos de comandos a seguir instalam as extensões Memcached.

```
$pecl install memcache
```

Ou você também pode usar o seguinte:

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

Os exemplos de comando a seguir instalam as extensões Redis.

```
$pecl install redis
```

Ou você também pode usar o seguinte:

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

## Configurar seu ambiente PHP
<a name="php-console"></a>

É possível usar o console do Elastic Beanstalk para habilitar a alternância de logs para o Amazon S3, configurar variáveis que a aplicação pode ler no ambiente e alterar as configurações do PHP.

**Como configurar seu ambiente PHP no console do Elastic Beanstalk**

1. Abra o console do [Elastic](https://console.aws.amazon.com/elasticbeanstalk) Beanstalk e, **na** lista Regiões, selecione sua. Região da AWS

1. No painel de navegação, selecione **Ambientes** e selecione o nome do ambiente na lista.

1. No painel de navegação, escolha **Configuration (Configuração)**.

1. Na categoria de configuração **Updates, monitoring, and logging (Atualizações, monitoramento e logs)**, escolha **Edit (Editar)**.

### Configurações de PHP
<a name="php-console-settings"></a>
+ **Proxy server (Servidor de proxy)**: o servidor de proxy a ser usado nas instâncias de ambiente. Por padrão, é usado nginx.
+ **Document root (Raiz do documento)**: a pasta que contém a página padrão do site. Se a sua página de boas-vindas não estiver na raiz do pacote de origem, especifique a pasta que a contém relativo ao caminho raiz. Por exemplo, `/public` se a página de boas-vindas estiver em uma pasta chamada `public`.
+ **Memory limite (Limite de memória)**: a quantidade máxima de memória que um script tem permissão para alocar. Por exemplo, .`512M`
+ **Zlib output compression (Compactação de saída Zlib)**: defina como `On` para compactar respostas.
+ **Allow URL fopen (Permitir URL fopen)**: defina como `Off` para impedir o download de arquivos de scripts de locais remotos.
+ **Display errors (Exibir erros)**: defina como `On` para mostrar mensagens de erro interno para depuração.
+ **Max execution time (runtime máximo)**: o tempo máximo em segundos que um script pode ser executado antes que o ambiente o encerre.

### Opções de log
<a name="php-console-logs"></a>

A seção Log Options tem duas configurações:
+ **Instance profile (Perfil da instância)**: especifica o perfil da instância que tem permissão para acessar o bucket do Amazon S3 associado à sua aplicação.
+ **Enable log file rotation to Amazon S3** (Habilitar a rotação de arquivos de log para o Amazon S3): especifica se os arquivos de log das instâncias do Amazon EC2 da aplicação serão copiados para o bucket do Amazon S3 associado a ela.

### Arquivos estáticos
<a name="php-console-staticfiles"></a>

Para melhorar a performance, você pode usar a seção **Static files** (Arquivos estáticos) para configurar o servidor proxy para servir arquivos estáticos (por exemplo, HTML ou imagens) de um conjunto de diretórios dentro da aplicação Web. Defina, para cada diretório, o caminho virtual para mapeamento de diretórios. Quando o servidor de proxy recebe uma solicitação para um arquivo no caminho especificado, ele atende o arquivo diretamente em vez de rotear solicitação para seu aplicativo.

Para ver detalhes sobre como configurar arquivos estáticos usando arquivos de configuração ou o console do Elastic Beanstalk, consulte [Fornecer arquivos estáticos](environment-cfg-staticfiles.md).

### Propriedades de ambiente
<a name="php-console-properties"></a>

A seção **Environment Properties** permite que você especifique definições de configuração do ambiente nas instâncias do Amazon EC2 que estão executando seu aplicativo. Essas definições são passadas para o aplicativo como pares de chave-valor. 

Seu código de aplicativo pode acessar propriedades de ambiente usando `$_SERVER` ou a função `get_cfg_var`.

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

Consulte [Variáveis de ambiente e outras configurações de software](environments-cfg-softwaresettings.md) para obter mais informações.

## Namespaces para configuração
<a name="php-namespaces"></a>

Você pode usar um [arquivo de configuração](ebextensions.md) para definir opções de configuração e executar outras tarefas de configuração de instância durante implantações. Opções de configuração podem ser [específicas da plataforma](command-options-specific.md) ou aplicáveis a [todas as plataformas](command-options-general.md) no serviço Elastic Beanstalk como um todo. As opções de configuração são organizadas em *namespaces*.

Os namespaces a seguir configuram seu serviço de proxy e opções específicas do PHP:
+ [`aws:elasticbeanstalk:environment:proxy:staticfiles`](command-options-general.md#command-options-general-environmentproxystaticfiles): configure o proxy do ambiente para servir arquivos estáticos. Defina mapeamentos de caminhos virtuais para diretórios de aplicativos.
+ [`aws:elasticbeanstalk:environment:proxy`](command-options-specific.md#command-options-php): especifique o servidor proxy do ambiente. 
+ [`aws:elasticbeanstalk:container:php:phpini`](command-options-specific.md#command-options-php): configure opções específicas do PHP. Este namespace inclui `composer_options`, que não está disponível no console do Elastic Beanstalk. Essa opção define as opções personalizadas a serem usadas ao instalar dependências usando o Composer por meio do `composer.phar install` comando. Para obter mais informações sobre esse comando, incluindo as opções disponíveis, consulte [instalar](https://getcomposer.org/doc/03-cli.md#install-i) no site *getcomposer.org*.

O exemplo de [arquivo de configuração](ebextensions.md) a seguir especifica uma opção de arquivos estáticos que mapeia um diretório chamado `staticimages` para o caminho `/images`, e mostra as configurações para cada uma das opções disponíveis no namespace `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**  
O namespace `aws:elasticbeanstalk:environment:proxy:staticfiles` não está definido nas ramificações da plataforma PHP de AMI do Amazon Linux (anterior ao Amazon Linux 2).

O Elastic Beanstalk oferece muitas opções de configuração para personalizar o ambiente. Além de arquivos de configuração, você também pode definir opções de configuração usando o console, configurações salvas, a EB CLI ou a AWS CLI. Consulte [Opções de configuração](command-options.md) para obter mais informações.

## Instalar dependências da aplicação PHP do Elastic Beanstalk
<a name="php-configuration-composer"></a>

Este tópico descreve como configurar a aplicação para instalar outros pacotes PHP necessários. Seu aplicativo pode ter dependências em outros pacotes PHP. É possível configurar a aplicação para instalar essas dependências nas instâncias do Amazon Elastic Compute Cloud (Amazon EC2) do ambiente. Como alternativa, você pode incluir as dependências do aplicativo no pacote de origem e implantá-las com o aplicativo. A seção a seguir discute cada uma dessas maneiras.

### Usar um arquivo do Composer para instalar dependências em instâncias
<a name="php-configuration-composer.oninstances"></a>

Use um arquivo `composer.json` na raiz da origem de seu projeto para usar o Composer para instalar os pacotes exigidos pela aplicação nas instâncias do Amazon EC2 do ambiente.

**Example composer.json**  

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

Quando um arquivo `composer.json` está presente, o Elastic Beanstalk executa `composer.phar install` para instalar dependências. Você pode adicionar opções para acrescentar ao comando definindo a opção [`composer_options`](#php-namespaces) no namespace `aws:elasticbeanstalk:container:php:phpini`.

### Incluir dependências no pacote de origem
<a name="php-configuration-composer.inbundle"></a>

Se o seu aplicativo tiver um grande número de dependências, sua instalação poderá demorar muito tempo. Isso pode aumentar a implantação e as operações de escalabilidade, porque as dependências são instaladas em cada nova instância.

Para evitar o impacto negativo no momento da implantação, use o Composer em seu ambiente de desenvolvimento para resolver dependências e instalá-las na pasta `vendor`.

**Para incluir dependências em seu pacote de origem do aplicativo**

1. Execute este comando: .

   ```
   % composer install
   ```

1. Inclua a pasta `vendor` gerada na raiz do seu pacote de origem do aplicativo.

Quando o Elastic Beanstalk encontra uma pasta `vendor` na instância, ele ignora o arquivo `composer.json` (mesmo se ele existir). O aplicativo usa as dependências da pasta `vendor`.

## Atualizar o Composer no Elastic Beanstalk
<a name="php-configuration-composerupdate"></a>

Este tópico descreve como configurar o Elastic Beanstalk para manter o Composer atualizado. Talvez seja necessário atualizar o Composer se você vir um erro ao tentar instalar pacotes com um arquivo do Composer ou se não conseguir usar a versão mais recente da plataforma. Entre as atualizações da plataforma, você pode atualizar o Composer em suas instâncias de ambiente por meio do uso de arquivos de configuração na pasta [`.ebextensions`](ebextensions.md).

É possível atualizar o Composer com a seguinte configuração.

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

A [configuração de opção](command-options-general.md#command-options-general-elasticbeanstalkapplicationenvironment) a seguir define a variável de ambiente `COMPOSER_HOME`, que configura o local do cache do Composer.

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

É possível combinar ambos no mesmo arquivo de configuração da pasta `.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
```

**nota**  
Devido às atualizações na instalação do Composer na versão da plataforma [de 22 de fevereiro de 2024](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2024-02-22-al2023.html) e na versão da AL2023 plataforma em [28 de fevereiro de 2024,](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2024-02-28-al2.html) AL2 a atualização automática do Composer pode falhar se for definida quando a atualização automática `COMPOSER_HOME` for executada.   
Os seguintes comandos combinados não serão executados: `export COMPOSER_HOME=/home/webapp/composer-home && /usr/bin/composer.phar self-update 2.7.0`   
Entretanto, o exemplo anterior funcionará. No exemplo anterior, a configuração da opção para `COMPOSER_HOME` não será passado para a execução do `01updateComposer` e não será definido quando o comando de autoatualização for executado.

**Importante**  
Se você omitir o número da versão do comando `composer.phar self-update`, o Composer será atualizado para a versão mais recente disponível a cada vez que você implantar seu código-fonte e quando novas instâncias forem provisionadas pelo Auto Scaling. Isso pode fazer com que as operações de escalabilidade e as implantações falhem se for lançada uma versão do Composer que não seja compatível com o seu aplicativo.

Para obter mais informações sobre as Plataformas PHP do Elastic Beanstalk, incluindo a versão do Composer, consulte [Versões da plataformas PHP](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.PHP) no documento *AWS Elastic Beanstalk Platforms* (Plataformas do Elastic Beanstalk.

## Estender php.ini na sua configuração do Elastic Beanstalk
<a name="php-configuration-phpini"></a>

Use um arquivo de configuração com um bloco `files` para adicionar um arquivo `.ini` em `/etc/php.d/` nas instâncias em seu ambiente. O arquivo de configuração principal, `php.ini`, obtém configurações de arquivos nesta pasta em ordem alfabética. Muitas extensões são habilitadas por padrão pelos arquivos nessa pasta.

**Example .ebextensions/mongo.config**  

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