

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menggunakan platform PHP Elastic Beanstalk
<a name="create_deploy_PHP.container"></a>

AWS Elastic Beanstalk menyediakan dan mendukung berbagai **cabang platform** untuk berbagai versi PHP. Platform mendukung aplikasi web PHP yang berjalan berdiri sendiri atau di bawah Composer. Lihat [PHP](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.PHP) di dokumen *AWS Elastic Beanstalk Platform* untuk daftar lengkap cabang platform yang didukung.

Elastic [Beanstalk menyediakan](command-options.md) opsi konfigurasi yang dapat Anda gunakan untuk menyesuaikan perangkat lunak yang berjalan pada instans Amazon EC2 di lingkungan Elastic Beanstalk Anda. Anda dapat [mengonfigurasi variabel lingkungan](environments-cfg-softwaresettings.md#environments-cfg-softwaresettings-console) yang diperlukan oleh aplikasi Anda, mengaktifkan rotasi log ke Amazon S3, memetakan folder di sumber aplikasi Anda yang berisi file statis ke jalur yang disajikan oleh server proxy, dan mengatur pengaturan inisialisasi PHP umum.

Pilihan konfigurasi tersedia di konsol Elastic Beanstalk untuk [memodifikasi konfigurasi dari lingkungan yang sedang berjalan](environment-configuration-methods-after.md). Agar Anda tidak kehilangan konfigurasi lingkungan ketika mengakhirinya, Anda dapat menggunakan [konfigurasi tersimpan](environment-configuration-savedconfig.md) untuk menyimpan pengaturan dan kemudian menerapkannya ke lingkungan lain.

Untuk menyimpan pengaturan di kode sumber, Anda dapat menyertakan [file konfigurasi](ebextensions.md). Pengaturan di file konfigurasi diterapkan setiap kali Anda membuat lingkungan atau men-deploy aplikasi Anda. Anda juga dapat menggunakan file konfigurasi untuk menginstal paket, menjalankan skrip, dan melakukan operasi penyesuaian instans lainnya selama deployment.

Jika Anda menggunakan Composer, Anda dapat [menyertakan file `composer.json`](#php-configuration-composer) di paket sumber untuk menginstal paket selama deployment.

Untuk konfigurasi PHP lanjutan dan pengaturan PHP yang tidak disediakan sebagai opsi konfigurasi, Anda dapat [menggunakan file konfigurasi untuk menyediakan file `INI`](#php-configuration-phpini) yang dapat memperluas dan mengganti pengaturan default yang diterapkan oleh Elastic Beanstalk, atau menginstal ekstensi tambahan.

Pengaturan yang diterapkan di konsol Elastic Beanstalk menimpa pengaturan yang sama dalam file konfigurasi, jika ada. Hal tersebut memungkinkan Anda memiliki pengaturan default di file konfigurasi, dan mengganti keduanya dengan pengaturan khusus lingkungan di konsol tersebut. Untuk informasi selengkapnya tentang yang diutamakan, dan metode lain untuk mengubah pengaturan, lihat [Opsi konfigurasi](command-options.md).

Untuk detail tentang berbagai cara memperluas platform berbasis Linux Elastic Beanstalk, lihat [Memperluas platform Linux Elastic Beanstalk](platforms-linux-extend.md).

**Topics**
+ [Menginstal AWS SDK for PHP](#php-development-environment-sdk)
+ [Pertimbangan untuk PHP 8.1 di Amazon Linux 2](#php-8-1-considerations)
+ [Mengonfigurasi lingkungan PHP Anda](#php-console)
+ [Ruang nama untuk konfigurasi](#php-namespaces)
+ [Menginstal dependensi](#php-configuration-composer)
+ [Memperbarui Composer](#php-configuration-composerupdate)
+ [Memperluas php.ini](#php-configuration-phpini)

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

Jika Anda perlu mengelola AWS sumber daya dari dalam aplikasi Anda, instal file AWS SDK untuk PHP. Misalnya, dengan SDK for PHP, Anda dapat menggunakan Amazon DynamoDB (DynamoDB) untuk menyimpan informasi pengguna dan sesi tanpa membuat basis data relasional.

Untuk menginstal SDK for PHP dengan Composer

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

Untuk informasi lebih lanjut, lihat [AWS SDK for PHP](https://aws.amazon.com/sdk-for-php/)beranda. Untuk petunjuk, lihat [Menginstal AWS SDK for PHP](https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/getting-started_installation.html).

## Pertimbangan untuk PHP 8.1 di Amazon Linux 2
<a name="php-8-1-considerations"></a>

Baca bagian ini jika Anda menggunakan *PHP 8.1 di cabang platform Amazon Linux 2*.

### Pertimbangan untuk PHP 8.1 di Amazon Linux 2
<a name="php-8-1-considerations-detail"></a>

**catatan**  
Informasi dalam topik ini hanya berlaku untuk *PHP 8.1 di cabang platform Amazon Linux 2*. Itu tidak berlaku untuk cabang platform PHP berdasarkan AL2023. Ini juga tidak berlaku untuk cabang platform *PHP 8.0 Amazon Linux 2*. 

Elastic Beanstalk menyimpan paket RPM terkait PHP 8.1 untuk *PHP 8.1 di cabang platform Amazon Linux 2 pada* instans EC2 di direktori lokal, bukan repositori Amazon Linux. Anda dapat menggunakan **rpm -i ** untuk menginstal paket. Dimulai dengan [PHP 8.1 Platform Versi 3.5.0](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-10-03-linux.html), Elastic Beanstalk menyimpan paket RPM terkait PHP 8.1 di direktori EC2 lokal berikut.

 `/opt/elasticbeanstalk/RPMS` 

Contoh berikut menginstal *php-debuginfo* paket.

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

Versi dalam nama paket akan bervariasi sesuai dengan versi aktual yang tercantum dalam direktori `/opt/elasticbeanstalk/RPMS` lokal EC2. Gunakan sintaks yang sama untuk menginstal paket PHP 8.1 RPM lainnya.

Perluas bagian berikut untuk menampilkan daftar paket RPM yang kami sediakan.

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

Daftar berikut menyediakan paket RMP yang disediakan platform Elastic Beanstalk PHP 8.1 di Amazon Linux 2. Ini terletak di direktori lokal`/opt/elasticbeanstalk/RPMS`.

Nomor versi *8.1.8-1 dan *3.7.0-1** dalam nama paket yang tercantum hanyalah sebuah contoh.
+ `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`

Anda dapat menggunakan paket PEAR dan PECL untuk menginstal ekstensi umum. Untuk informasi lebih lanjut tentang PEAR, lihat situs web [PEAR PHP Extension and Application Repository](https://pear.php.net). Untuk informasi lebih lanjut tentang PECL, lihat situs web [ekstensi PECL](https://pecl.php.net).

Contoh perintah berikut menginstal ekstensi Memcached.

```
$pecl install memcache
```

Atau Anda juga bisa menggunakan yang berikut ini:

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

Contoh perintah berikut menginstal ekstensi Redis.

```
$pecl install redis
```

Atau Anda juga bisa menggunakan yang berikut ini:

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

## Mengonfigurasi lingkungan PHP Anda
<a name="php-console"></a>

Anda dapat menggunakan konsol Elastic Beanstalk untuk mengaktifkan rotasi log ke Amazon S3, mengonfigurasi variabel yang dapat dibaca aplikasi Anda dari lingkungan, dan mengubah pengaturan PHP.

**Untuk mengonfigurasi lingkungan PHP Anda di konsol Elastic Beanstalk**

1. **Buka konsol [Elastic Beanstalk, dan di daftar Wilayah, pilih konsol Elastic](https://console.aws.amazon.com/elasticbeanstalk) Beanstalk.** Wilayah AWS

1. Di panel navigasi, pilih **Lingkungan**, dan kemudian pilih nama lingkungan Anda dari daftar.

1. Pada panel navigasi, pilih **Konfigurasi**.

1. Dalam kategori konfigurasi **Pembaruan, pemantauan, dan pencatatan**, pilih **Edit**.

### Pengaturan PHP
<a name="php-console-settings"></a>
+ **Server proksi** – Server proksi yang akan digunakan pada instans lingkungan Anda. Secara default, nginx digunakan.
+ **Akar dokumen** – Folder yang berisi halaman default situs Anda. Jika halaman selamat datang Anda tidak berada di akar paket sumber Anda, tentukan folder yang memuatnya itu relatif terhadap jalur akar. Misalnya, `/public` jika halaman selamat datang berada dalam folder bernama `public`.
+ **Batas memori** – Jumlah maksimum memori yang dapat dialokasikan oleh skrip. Misalnya, `512M`.
+ **Kompresi output Zlib** – Atur ke `On` untuk memampatkan respons.
+ **Ijinkan URL fopen** – Atur ke `Off` untuk mencegah skrip mengunduh file dari lokasi jarak jauh.
+ **Kesalahan tampilan** – Atur ke `On` untuk menampilkan pesan kesalahan internal untuk debugging.
+ **Waktu eksekusi maks** – Waktu maksimum dalam detik yang boleh dijalankan skrip sebelum lingkungan mengakhirinya.

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

Bagian Opsi Log memiliki dua pengaturan:
+ **Profil instans**– Menentukan profil instans yang memiliki izin untuk mengakses bucket Amazon S3 yang terkait dengan aplikasi Anda.
+ **Aktifkan rotasi file log ke Amazon S3** — Menentukan apakah file log untuk instans Amazon EC2 aplikasi Anda disalin ke bucket Amazon S3 yang terkait dengan aplikasi Anda.

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

Untuk meningkatkan kinerja, Anda dapat menggunakan bagian **File statis** untuk mengkonfigurasi server proxy untuk melayani file statis (misalnya, HTML atau gambar) dari satu set direktori di dalam aplikasi web Anda. Untuk setiap direktori, Anda mengatur jalur virtual ke pemetaan direktori. Saat server proksi menerima permintaan untuk file di jalur yang ditentukan, server langsung menyajikan file daripada merutekan permintaan ke aplikasi Anda.

Untuk detail tentang mengonfigurasi file statis menggunakan file konfigurasi atau konsol Elastic Beanstalk, lihat. [Menyajikan file statis](environment-cfg-staticfiles.md)

### Properti lingkungan
<a name="php-console-properties"></a>

Bagian **Properti Lingkungan** memungkinkan Anda menentukan pengaturan konfigurasi lingkungan di instans Amazon EC2 yang menjalankan aplikasi Anda. Pengaturan ini diteruskan sebagai pasangan nilai kunci ke aplikasi. 

Kode aplikasi Anda dapat mengakses properti lingkungan dengan menggunakan fungsi `$_SERVER` atau `get_cfg_var`.

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

Lihat [Variabel lingkungan dan pengaturan perangkat lunak lainnya](environments-cfg-softwaresettings.md) untuk informasi selengkapnya.

## Ruang nama untuk konfigurasi
<a name="php-namespaces"></a>

Anda dapat menggunakan [file konfigurasi](ebextensions.md) untuk mengatur opsi konfigurasi dan melakukan tugas-tugas konfigurasi instans lain selama deployment. Opsi konfigurasi dapat berupa [platform khusus](command-options-specific.md) atau berlaku untuk [semua platform di layanan](command-options-general.md) Elastic Beanstalk secara keseluruhan. Opsi konfigurasi diatur ke dalam *ruang nama*.

Ruang nama berikut mengonfigurasi layanan proxy dan opsi khusus PHP Anda:
+ [`aws:elasticbeanstalk:environment:proxy:staticfiles`](command-options-general.md#command-options-general-environmentproxystaticfiles)— mengkonfigurasi proxy lingkungan untuk melayani file statis. Anda menentukan pemetaan jalur virtual ke direktori aplikasi.
+ [`aws:elasticbeanstalk:environment:proxy`](command-options-specific.md#command-options-php)— tentukan server proxy lingkungan. 
+ [`aws:elasticbeanstalk:container:php:phpini`](command-options-specific.md#command-options-php)— konfigurasikan opsi khusus PHP. Namespace ini termasuk`composer_options`, yang tidak tersedia di konsol Elastic Beanstalk. Opsi ini menetapkan opsi kustom untuk digunakan saat menginstal dependensi menggunakan Komposer melalui perintah. `composer.phar install` Untuk informasi selengkapnya tentang perintah ini, termasuk opsi yang tersedia, lihat [menginstal](https://getcomposer.org/doc/03-cli.md#install-i) di situs *getcomposer.org*.

Contoh berikut [file konfigurasi](ebextensions.md) menentukan opsi file statis yang memetakan sebuah direktori bernama `staticimages` ke jalur `/images`, dan menampilkan pengaturan untuk masing-masing opsi yang tersedia di 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
```

**catatan**  
Namespace `aws:elasticbeanstalk:environment:proxy:staticfiles` tidak ditegaskan pada cabang platform Amazon Linux AMI PHP (Amazon Linux 2 yang terdahulu).

Elastic Beanstalk memberikan banyak opsi konfigurasi untuk menyesuaikan lingkungan Anda. Selain file konfigurasi, Anda juga dapat mengatur opsi konfigurasi menggunakan konsol tersebut, konfigurasi tersimpan, EB CLI, atau AWS CLI. Untuk informasi selengkapnya, lihat [Opsi konfigurasi](command-options.md).

## Menginstal dependensi aplikasi PHP Elastic Beanstalk Anda
<a name="php-configuration-composer"></a>

Topik ini menjelaskan cara mengkonfigurasi aplikasi Anda untuk menginstal paket PHP lain yang diperlukan. Aplikasi Anda mungkin memiliki dependensi pada paket PHP lainnya. Anda dapat mengonfigurasikan aplikasi Anda untuk menginstal dependensi ini di instans Amazon Elastic Compute Cloud (Amazon EC2) lingkungan. Atau, Anda dapat menyertakan dependensi aplikasi Anda dalam paket sumber dan men-deploy mereka dengan aplikasi. Bagian berikut membahas kedua cara tersebut.

### Gunakan file Composer untuk menginstal dependensi pada instans
<a name="php-configuration-composer.oninstances"></a>

Gunakan file `composer.json` dalam akar sumber proyek Anda untuk menggunakan komposer guna menginstal paket yang dibutuhkan aplikasi Anda pada instans Amazon EC2 lingkungan Anda.

**Example composer.json**  

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

Saat file `composer.json` ada, Elastic Beanstalk menjalankan `composer.phar install` untuk menginstal dependensi. Anda dapat menambahkan opsi untuk ditambahkan ke perintah dengan mengatur [opsi `composer_options`](#php-namespaces) dalam namespace `aws:elasticbeanstalk:container:php:phpini`.

### Sertakan dependensi dalam paket sumber
<a name="php-configuration-composer.inbundle"></a>

Jika aplikasi Anda memiliki dependensi dalam jumlah yang banyak, menginstalnya mungkin perlu waktu lama. Hal ini dapat meningkatkan operasi penskalaan dan deployment, karena dependensi diinstal pada setiap instans baru.

Untuk menghindari dampak negatif pada waktu deployment, gunakan Composer di lingkungan pengembangan Anda untuk menetapkan dependensi dan menginstalnya ke folder `vendor`.

**Untuk menyertakan dependensi dalam paket sumber aplikasi Anda**

1. Jalankan perintah berikut:

   ```
   % composer install
   ```

1. Sertakan folder `vendor` yang dihasilkan di dalam akar paket sumber aplikasi Anda.

Ketika Elastic Beanstalk menemukan folder `vendor` pada instans, file `composer.json` akan diabaikan (meskipun ada). Aplikasi Anda kemudian menggunakan dependensi dari folder `vendor`.

## Memperbarui Komposer pada Elastic Beanstalk
<a name="php-configuration-composerupdate"></a>

Topik ini menjelaskan cara mengkonfigurasi Elastic Beanstalk agar Composer tetap up to date. Anda mungkin harus memperbarui Composer jika Anda melihat kesalahan ketika Anda mencoba untuk menginstal paket dengan file Composer, atau jika Anda tidak dapat menggunakan versi platform terbaru. Di antara pembaruan platform, Anda dapat memperbarui Composer di instance lingkungan Anda melalui penggunaan file konfigurasi di folder Anda [`.ebextensions`](ebextensions.md).

Anda dapat memperbarui sendiri Komposer dengan konfigurasi berikut.

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

[Pengaturan opsi berikut menetapkan](command-options-general.md#command-options-general-elasticbeanstalkapplicationenvironment) variabel `COMPOSER_HOME` lingkungan, yang mengkonfigurasi lokasi cache Komposer.

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

Anda dapat menggabungkan keduanya dalam file konfigurasi yang sama di `.ebextensions` folder Anda.

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

**catatan**  
Karena pembaruan pada instalasi Komposer pada rilis platform [22 Februari 2024](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2024-02-22-al2023.html) dan rilis AL2023 platform [28 Februari 2024,](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2024-02-28-al2.html) AL2 pembaruan mandiri Komposer mungkin gagal jika disetel saat pembaruan mandiri `COMPOSER_HOME` dijalankan.   
Perintah gabungan berikut akan gagal dijalankan: `export COMPOSER_HOME=/home/webapp/composer-home && /usr/bin/composer.phar self-update 2.7.0`   
Namun, contoh sebelumnya akan berhasil. Pada contoh sebelumnya, pengaturan opsi untuk tidak `COMPOSER_HOME` akan diteruskan ke `01updateComposer` eksekusi, dan itu tidak akan diatur ketika perintah pembaruan mandiri dijalankan.

**penting**  
Jika Anda menghilangkan nomor versi dari perintah `composer.phar self-update`, Composer akan memperbarui ke versi terbaru yang tersedia setiap kali Anda men-deploy kode sumber, dan ketika instans baru disediakan oleh Auto Scaling. Hal ini dapat menyebabkan operasi penskalaan dan deployment gagal jika versi Composer yang dirilis tidak kompatibel dengan aplikasi Anda.

Untuk informasi lebih lanjut tentang Platform PHP Elastic Beanstalk, termasuk versi Composer, lihat [versi platform PHP](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.PHP) dalam dokumen *Platform AWS Elastic Beanstalk *.

## Memperluas php.ini dalam konfigurasi Elastic Beanstalk Anda
<a name="php-configuration-phpini"></a>

Gunakan file konfigurasi dengan blok `files` untuk menambahkan file `.ini` ke `/etc/php.d/` pada instans di lingkungan Anda. File konfigurasi utama, `php.ini`, menarik pengaturan dari file pada folder ini dalam urutan abjad. Banyak ekstensi diaktifkan secara default oleh file dalam folder ini.

**Example .ebextensions/mongo.config**  

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