Cara Mengatasi Fatal Error Memory Limit Exceeded di PHP

Solusi Cepat Mengatasi Memory Limit Exceeded

Error Fatal error: Allowed memory size of X bytes exhausted terjadi karena skrip PHP Anda mencoba menggunakan memori melebihi batas (limit) yang diizinkan oleh konfigurasi server. Untuk mengatasinya, Anda perlu meningkatkan nilai memory_limit pada file konfigurasi PHP atau melakukan optimasi kode agar penggunaan memori lebih efisien.

Metode 1: Mengubah php.ini (Paling Direkomendasikan)

Jika Anda memiliki akses ke server, cari file php.ini. Lokasi file ini biasanya berada di /etc/php/7.x/apache2/php.ini atau /etc/php/7.x/fpm/php.ini. Ubah baris berikut:

memory_limit = 256M

Setelah diubah, simpan file dan restart layanan web server Anda (Apache atau PHP-FPM) agar perubahan diterapkan.

Metode 2: Menggunakan .htaccess

Jika Anda menggunakan shared hosting dan tidak memiliki akses ke php.ini, tambahkan baris berikut ke dalam file .htaccess di direktori root situs Anda:

php_value memory_limit 256M

Metode 3: Mengubah via Skrip PHP

Anda dapat meningkatkan limit secara spesifik pada file PHP tertentu dengan menambahkan fungsi ini di baris paling atas skrip:

ini_set('memory_limit', '256M');
MetodeTingkat AksesEfektivitas
php.iniRoot/ServerPermanen & Global
.htaccessUser/HostingPermanen per folder
ini_set()Skrip PHPSementara per file

Tips Optimasi Kode

Meningkatkan limit memori hanyalah solusi sementara. Jika aplikasi Anda terus membutuhkan memori besar, lakukan langkah berikut:

  • Gunakan Generator: Gunakan yield untuk memproses data besar (seperti membaca file CSV besar) agar tidak memuat seluruh data ke dalam array.
  • Bersihkan Variabel: Gunakan unset() untuk menghapus variabel yang tidak lagi digunakan.
  • Database Query: Hindari SELECT *. Ambil hanya kolom yang diperlukan dan gunakan limitasi data (pagination).
  • Cek Memory Leak: Pastikan tidak ada rekursi fungsi yang tidak memiliki kondisi berhenti (base case).