---
title: "Penyebab Error 500 di Website PHP dan Cara Melacaknya"
description: "Error 500 di website PHP hampir selalu meninggalkan jejak di log. Ikuti langkah melacaknya, dari log web server sampai pesan fatal error PHP."
url: "https://nivelva.com/insight/penyebab-error-500-website-php-cara-melacaknya"
category: "Server \u0026 Infrastruktur"
tags: ["error 500","php","troubleshooting","log","internal server error"]
author: "Theresia Candiawan"
published: "2026-11-07T10:36:00+07:00"
updated: "2026-11-07T10:36:00+07:00"
language: "id"
publisher: "Nivelva (https://nivelva.com)"
---

# Penyebab Error 500 di Website PHP dan Cara Melacaknya

> **Jawaban singkat:** Error 500 di website PHP biasanya disebabkan fatal error PHP, salah tulis di .htaccess, memory_limit habis, ekstensi PHP yang hilang, atau izin file yang salah. Cara tercepat melacaknya adalah membaca log error web server dan log PHP pada waktu error terjadi.

Website tiba-tiba menampilkan "500 Internal Server Error" tanpa penjelasan apa pun? Itu memang sifat error 500: server tahu ada yang salah, tapi tidak memberi tahu pengunjung apa masalahnya.

Kabar baiknya, di website PHP hampir setiap error 500 meninggalkan jejak di log. Pengaturan produksi yang benar memang menyembunyikan detail error dari pengunjung (`display_errors` dimatikan), sehingga yang terlihat hanya halaman kosong atau pesan 500. Detailnya tersimpan di log, dan tugasmu adalah menemukannya. Langkah di bawah berlaku untuk WordPress, Laravel, CodeIgniter, maupun aplikasi PHP buatan sendiri.

## Bagaimana cara melacak error 500?

### Langkah 1: Catat waktu dan URL yang error

Sebelum membuka log apa pun, catat jam kejadian dan halaman yang error. Apakah semua halaman kena, atau hanya halaman tertentu seperti checkout atau dasbor admin? Error di semua halaman biasanya menunjuk ke konfigurasi global (`.htaccess`, versi PHP, file inti). Error di satu halaman menunjuk ke kode atau plugin tertentu.

Tanyakan juga: apa yang berubah terakhir kali? Update plugin, ganti versi PHP, upload file baru, atau edit konfigurasi hampir selalu menjadi tersangka utama.

### Langkah 2: Buka log error web server

Lokasinya tergantung server:

- **Apache di Ubuntu dan Debian:** `/var/log/apache2/error.log`
- **Apache di AlmaLinux dan Rocky Linux:** `/var/log/httpd/error_log`
- **Nginx:** `/var/log/nginx/error.log`, atau lokasi di direktif `error_log` pada konfigurasi situs
- **cPanel:** menu Errors atau Metrics di panel, juga file `error_log` di folder website

Jalankan `tail -n 50` pada file log, lalu ulangi akses ke halaman yang error dan lihat baris baru yang muncul. Panduan membaca log di cPanel ada di artikel [membaca error log cPanel](https://nivelva.com/insight/cara-membaca-error-log-cpanel-melacak-masalah), sedangkan lokasi log Linux lainnya dirangkum di [lokasi log penting di Linux](https://nivelva.com/insight/log-linux-penting).

Di Nginx dengan PHP-FPM, error PHP sering muncul di log Nginx dengan awalan `FastCGI sent in stderr`. Itu artinya pesan berasal dari PHP, bukan dari Nginx.

### Langkah 3: Cari log PHP bila log web server kosong

Kalau log web server tidak mencatat detail, periksa ke mana PHP menulis error. Jalankan `php -i | grep -E "error_log|log_errors"` untuk melihat pengaturan PHP CLI, tetapi ingat bahwa PHP-FPM memakai file konfigurasi sendiri. Di konfigurasi pool PHP-FPM, cari baris `php_admin_value[error_log]` atau `catch_workers_output`.

Banyak framework juga punya log sendiri. WordPress menulis ke `wp-content/debug.log` bila `WP_DEBUG_LOG` diaktifkan (caranya ada di artikel [debug mode WordPress](https://nivelva.com/insight/cara-mengaktifkan-debug-mode-wordpress-cari-error)). Laravel menulis ke `storage/logs/laravel.log`.

### Langkah 4: Cocokkan pesan dengan penyebabnya

Setelah menemukan baris log yang tepat, sebagian besar penyebab langsung terlihat dari pesannya:

- **`PHP Fatal error: Uncaught Error: Call to undefined function`**: fungsi tidak ada, biasanya ekstensi PHP belum dipasang (misalnya `mysqli` atau `gd`) atau kode memanggil fungsi yang sudah dihapus di versi PHP lebih baru.
- **`Allowed memory size of ... bytes exhausted`**: skrip melewati `memory_limit`. Naikkan batasnya secukupnya, tapi juga cari kenapa skrip memakan memori sebanyak itu.
- **`PHP Parse error: syntax error`**: ada salah tulis di kode, sering terjadi setelah mengedit file langsung di server.
- **`Invalid command ... perhaps misspelled`** di log Apache: ada baris di `.htaccess` yang tidak dikenali, biasanya karena modul Apache yang dibutuhkan tidak aktif.
- **`Permission denied`**: web server atau PHP tidak bisa membaca file. Di sebagian hosting yang menjalankan PHP sebagai pemilik akun, file atau folder dengan izin terlalu longgar (misalnya 777) justru ditolak dan menghasilkan 500.
- **`Maximum execution time of ... seconds exceeded`**: skrip berjalan melewati batas `max_execution_time`.

### Langkah 5: Uji perbaikan satu per satu

Lakukan satu perubahan, uji, lalu lanjut bila perlu. Untuk kesalahan sintaks, `php -l namafile.php` memeriksa sintaks sebuah file tanpa menjalankannya. Untuk dugaan plugin WordPress, ganti nama folder plugin yang dicurigai lewat File Manager supaya plugin itu nonaktif. Untuk dugaan `.htaccess`, ganti nama file sementara, lalu kembalikan setelah barisnya diperbaiki.

Bila error muncul setelah mengganti versi PHP, kembalikan dulu ke versi sebelumnya supaya website pulih, lalu cari kode yang tidak kompatibel. Artikel [mengganti versi PHP di hosting dengan aman](https://nivelva.com/insight/cara-mengganti-versi-php-hosting-aman) membahas urutan yang tepat.

### Langkah 6: Matikan lagi mode debug

Kalau kamu sempat menyalakan `display_errors` atau `WP_DEBUG_DISPLAY` untuk melihat pesan langsung di browser, matikan lagi setelah selesai. Pesan error bisa membocorkan path folder, nama database, atau potongan kode ke siapa pun yang membuka halaman.

## Pesan error apa yang paling sering muncul?

| Pesan di log | Penyebab | Tindakan pertama |
|:--|:--|:--|
| Call to undefined function | Ekstensi PHP hilang atau fungsi usang | Cek `php -m`, pasang ekstensi atau perbarui kode |
| Allowed memory size exhausted | `memory_limit` terlampaui | Naikkan batas secukupnya, cari proses yang boros |
| Parse error: syntax error | Salah tulis kode | `php -l` pada file yang disebut di log |
| Invalid command di .htaccess | Modul Apache tidak aktif atau salah tulis | Perbaiki atau hapus baris tersebut |
| Permission denied | Izin atau pemilik file salah | Kembalikan izin file 644 dan folder 755 |
| Maximum execution time exceeded | Skrip terlalu lama | Optimalkan proses atau pindahkan ke latar belakang |

## Pertanyaan yang sering diajukan

### Kenapa error 500 tidak menampilkan pesan apa pun di browser?

Karena di server produksi `display_errors` sengaja dimatikan supaya detail teknis tidak terlihat pengunjung. Detail error tetap dicatat di log bila `log_errors` aktif.

### Apakah error 500 bisa disebabkan database?

Bisa, misalnya bila koneksi database gagal dan aplikasi tidak menangani kegagalan itu dengan baik. Pada WordPress, gangguan database biasanya tampil sebagai pesan "Error establishing a database connection", bukan 500 polos.

### Log error kosong padahal website error 500, kenapa?

Kemungkinan kamu membuka log yang salah, `log_errors` dimatikan, atau PHP-FPM menulis ke file lain. Periksa konfigurasi pool PHP-FPM dan lokasi `error_log` di konfigurasi situs.

### Bolehkah saya mengatur izin file 777 supaya error hilang?

Jangan. Izin 777 membuat file bisa diubah siapa saja di server dan di sebagian hosting malah memicu error 500. Gunakan 644 untuk file dan 755 untuk folder, kecuali aplikasi mendokumentasikan kebutuhan lain.

### Apa bedanya error 500 dengan 502?

500 berarti aplikasi gagal memproses permintaan. 502 berarti proxy seperti Nginx tidak mendapat jawaban sah dari backend, misalnya karena PHP-FPM mati.

## Checklist singkat

- Catat jam, URL, dan perubahan terakhir.
- Baca log web server, lalu log PHP dan log framework.
- Cocokkan pesan dengan penyebab, perbaiki satu hal per percobaan.
- Uji ulang halaman yang error dan halaman lain yang penting.
- Matikan kembali tampilan error di browser setelah selesai.

## Sumber

- <https://www.rfc-editor.org/rfc/rfc9110#name-500-internal-server-error>
- <https://www.php.net/manual/en/errorfunc.configuration.php>
- <https://www.php.net/manual/en/features.commandline.options.php>

---

Diterbitkan oleh Nivelva Insight (https://nivelva.com/insight/). Artikel ini: https://nivelva.com/insight/penyebab-error-500-website-php-cara-melacaknya
Kontak Nivelva: WhatsApp https://wa.me/6285111245007, email hello@nivelva.com
