Error 500 Webserver

Kadang saya menjumpai ketika sebuah situs diakses dia mengeluarkan error 500. Sulit bagi developer untuk mentraking error ini. Yang jelas, inis ebuah pemberitahuan jika ada error pada situs. kalau saya sih biasanya karena saya edit file php-nya dan ada kesalahan sintak 🙂

Saya bertanya ke openAI tentang masalah ini. Dan yang paling penting adalah bagaimana saya bisa mencari error detailnya.

Untuk mendiagnosis HTTP Error 500 pada server dengan Nginx dan PHP-FPM, Anda perlu memeriksa log error dan konfigurasi terkait. Berikut langkah-langkahnya:


1. Periksa Log Nginx

Nginx memiliki file log untuk mencatat kesalahan. Cari file log error di lokasi yang biasanya diatur di file konfigurasi Nginx, seperti:

  • Lokasi Default Log Nginx:
    • /var/log/nginx/error.log
    • /var/log/nginx/access.log
  • Periksa Error Log: Jalankan perintah berikut untuk melihat log terbaru:
    tail -f /var/log/nginx/error.log
    
  • Jika Anda menggunakan virtual host untuk app.mysite.com, log error mungkin terpisah. Cek file konfigurasi Nginx untuk domain tersebut:
    sudo nano /etc/nginx/sites-available/app.mysite.com
    

    Cari baris seperti:

    error_log /path/to/your/error.log;
    

    Dan periksa file log yang disebutkan.


2. Periksa Log PHP-FPM

PHP-FPM mencatat kesalahan eksekusi PHP. File lognya biasanya berada di:

  • Lokasi Default Log PHP-FPM:
    • /var/log/php7.4-fpm.log (ganti 7.4 dengan versi PHP Anda)
    • /var/log/php-fpm/error.log
  • Lihat Log PHP-FPM: Jalankan:
    tail -f /var/log/php7.4-fpm.log
    

Jika log PHP-FPM tidak memberikan detail yang cukup, aktifkan log kesalahan di file konfigurasi PHP:

  1. Edit file php.ini:
    sudo nano /etc/php/7.4/fpm/php.ini
    

    Aktifkan pengaturan berikut:

    display_errors = On
    log_errors = On
    error_log = /var/log/php_errors.log
    
  2. Restart PHP-FPM:
    sudo systemctl restart php7.4-fpm
    

3. Periksa Konfigurasi Nginx

Pastikan konfigurasi Nginx untuk aplikasi Anda benar, terutama bagian location untuk file PHP. Contoh konfigurasi yang umum:

server {
    server_name app.mysite.com; root /var/www/app1; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } error_log /var/log/nginx/app1_error.log; access_log /var/log/nginx/app1_access.log; } 

Setelah mengedit file konfigurasi, cek sintaksnya dan reload Nginx:

sudo nginx -t
sudo systemctl reload nginx

4. Tes Permintaan Manual

Jalankan script PHP sederhana untuk memastikan PHP-FPM bekerja:

  1. Buat file info.php di root aplikasi:
    echo "<?php phpinfo(); ?>" > /var/www/app/info.php
    
  2. Akses URL: http://app.mysite.com/info.php. Jika berhasil, PHP-FPM berfungsi.

5. Masalah Umum

  • Masalah Izin: Pastikan Nginx dan PHP-FPM memiliki akses ke file aplikasi:
    sudo chown -R www-data:www-data /var/www/app
    sudo chmod -R 755 /var/www/app1
    
  • Kesalahan pada Kode PHP: Jika log menunjukkan kesalahan spesifik pada file PHP, debug kode tersebut.