Skip to content

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.

PengaturanNilai yang DisarankanAlasan Optimasi
memory_limit128M - 256MLaravel, terutama saat memproses job atau menggunakan package berat (seperti pemrosesan gambar), membutuhkan alokasi memori yang memadai. Nilai default sering terlalu kecil.
max_execution_time60 detikBatasi 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_filesize20M (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.

ini
display_errors = Off
display_startup_errors = Off

2. Mengaktifkan Logging Error

Meskipun error tidak ditampilkan, Anda harus mencatatnya untuk tujuan debugging. Pastikan error logging diaktifkan dan diarahkan ke lokasi yang aman.

ini
log_errors = On
error_log = /var/log/php/laravel_php_errors.log

3. Menyembunyikan Versi PHP

Matikan header X-Powered-By yang mengungkapkan versi PHP Anda. Ini adalah praktik keamanan "security through obscurity" yang baik.

ini
expose_php = Off

4. 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.

ini
allow_url_fopen = Off

III. 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 OpcacheNilai Production WajibAlasan Optimasi
opcache.enable1Mengaktifkan Opcache.
opcache.validate_timestamps0Sangat 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_consumption128 atau 256Alokasi memori untuk cache. Sesuaikan dengan jumlah script di proyek Laravel Anda.
opcache.max_accelerated_files10000Memastikan 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:

  1. 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
  2. Konfigurasi Laravel: Pastikan file .env Laravel Anda juga sudah diatur dengan benar untuk production:
    ini
    APP_ENV=production
    APP_DEBUG=false