Optimasi PHP
Mengoperasikan aplikasi Laravel di lingkungan production membutuhkan lebih dari sekadar menginstal PHP. Pengaturan default PHP sering kali dioptimalkan untuk lingkungan pengembangan (development), bukan untuk kinerja, stabilitas, dan keamanan tinggi yang dibutuhkan oleh server live.
Artikel ini akan membahas konfigurasi kunci dalam file php.ini yang harus Anda terapkan saat menggunakan PHP 8.3 untuk menghosting aplikasi Laravel Anda.
I. Prioritas Utama: Kinerja dan Pengelolaan Memori
Kinerja adalah kunci. Pengaturan ini memastikan skrip Laravel Anda memiliki sumber daya yang cukup untuk menjalankan request berat, queue worker, atau tugas cron tanpa mengalami timeout atau kehabisan memori.
| Pengaturan | Nilai yang Disarankan | Alasan Optimasi |
|---|---|---|
memory_limit | 128M - 256M | Laravel, terutama saat memproses job atau menggunakan package berat (seperti pemrosesan gambar), membutuhkan alokasi memori yang memadai. Nilai default sering terlalu kecil. |
max_execution_time | 60 detik | Batasi waktu eksekusi untuk permintaan HTTP biasa. Ini mencegah skrip yang macet (hang) memblokir resource server. Untuk tugas background yang panjang, gunakan set_time_limit(0) di dalam kode Laravel. |
post_max_size & upload_max_filesize | 20M (atau lebih) | Sesuaikan nilai ini sesuai kebutuhan upload aplikasi Anda. Pastikan post_max_size lebih besar atau sama dengan upload_max_filesize. |
II. Pilar Keamanan: Menyembunyikan Informasi Sensitif
Di lingkungan production, Anda harus menyembunyikan detail teknis yang dapat dieksploitasi oleh penyerang.
1. Mematikan Tampilan Error Publik
Ini adalah langkah keamanan paling krusial. Jangan pernah menampilkan pesan error dan stack trace PHP kepada pengguna akhir.
display_errors = Off
display_startup_errors = Off2. Mengaktifkan Logging Error
Meskipun error tidak ditampilkan, Anda harus mencatatnya untuk tujuan debugging. Pastikan error logging diaktifkan dan diarahkan ke lokasi yang aman.
log_errors = On
error_log = /var/log/php/laravel_php_errors.log3. Menyembunyikan Versi PHP
Matikan header X-Powered-By yang mengungkapkan versi PHP Anda. Ini adalah praktik keamanan "security through obscurity" yang baik.
expose_php = Off4. Pembatasan Akses URL
Nonaktifkan allow_url_fopen untuk mencegah penggunaan fungsi file I/O PHP (seperti file_get_contents()) untuk membuka URL eksternal, yang dapat mengurangi risiko serangan injeksi.
allow_url_fopen = OffIII. Mesin Kinerja: Optimasi Opcache
OPcache adalah ekstensi terpenting untuk kinerja PHP. Ia menyimpan bytecode skrip yang telah dikompilasi di memori server, menghilangkan kebutuhan untuk mengompilasi ulang pada setiap permintaan. Pastikan Anda mengaktifkan dan mengkonfigurasi ekstensi ini dengan benar.
Dalam konfigurasi Opcache (biasanya di opcache.ini atau bagian dari php.ini):
| Pengaturan Opcache | Nilai Production Wajib | Alasan Optimasi |
|---|---|---|
opcache.enable | 1 | Mengaktifkan Opcache. |
opcache.validate_timestamps | 0 | Sangat Penting! Setel ke 0 agar PHP tidak memeriksa perubahan file sumber pada setiap request. Kinerja akan melonjak drastis. Catatan: Setelah deploy kode baru, Anda harus me-restart PHP-FPM atau menghapus cache secara manual. |
opcache.memory_consumption | 128 atau 256 | Alokasi memori untuk cache. Sesuaikan dengan jumlah script di proyek Laravel Anda. |
opcache.max_accelerated_files | 10000 | Memastikan semua file skrip Laravel (termasuk vendor) dapat di-cache. |
IV. Langkah Selanjutnya
Setelah Anda memodifikasi file php.ini, ada dua langkah penting yang harus dilakukan:
- Restart Layanan PHP-FPM: Karena Anda berada di lingkungan production, Anda hampir pasti menggunakan PHP-FPM. Jalankan perintah restart agar konfigurasi baru berlaku:bash
sudo systemctl restart php8.3-fpm - Konfigurasi Laravel: Pastikan file
.envLaravel Anda juga sudah diatur dengan benar untuk production:iniAPP_ENV=production APP_DEBUG=false