Ana içeriğe geç

500 Dahili Sunucu Hatası: Nedenleri ve Çözümleri

· 4 dakikalık okuma
Customer Care Engineer

500-dahili-sunucu-hatasi-web-sitesi-sorun-giderme

500 Dahili Sunucu Hatası, web sitesi sahiplerinin ve yöneticilerin karşılaştığı en yaygın sorunlardan biridir. Sunucuda bir şeyler ters gittiğini belirtir; ancak kesin bir teşhis sunmaz. Bu makale, 500 hatasına tipik olarak nelerin neden olduğunu ve nasıl çözebileceğinizi açıklar.


500 hatasının olası nedenleri

Bir 500 hatası birçok nedenden kaynaklanabilir. En sık görülenler şunlardır:

  1. Sunucu tarafı kaynak sorunları

Çoğu zaman 500 hatası, kaynak eksikliği (RAM, CPU süresi) gibi sunucudaki teknik sorunlardan kaynaklanabilir.

  1. Web sitesi kodundaki hatalar

Betikler veya web sitesi kodu, çökmeye neden olan hatalar içerebilir. Bu, yanlış istekler, yapılandırma dosyalarındaki hatalar veya site bileşenlerinin etkileşimindeki sorunlar nedeniyle olabilir.

  1. .htaccess dosyasıyla ilgili sorunlar

.htaccess dosyası, web sunucusunu yapılandırmak için kullanılır ve 500 hatasına neden olacak hatalar içerebilir. Örneğin, yanlış yönlendirme kuralları veya yanlış parametreler çökmeye neden olabilir.

  1. Son güncellemeler

Değişikliklerin doğru şekilde ele alınmadığı web sitesi veya sunucu uygulamalarındaki güncellemelerden sonra hatalar oluşabilir.


500 hatası nasıl düzeltilir

  1. Web sunucusu günlüklerini kontrol edin

Bir 500 hatasının nedenini belirlemek için ilk adım sunucu günlüklerini kontrol etmektir. Bu günlükler genellikle hatanın bilgisi hakkında bilgi içerir, ister kod hatası, yanlış yapılandırma veya sunucu düzeyinde bir sorun olsun. Ancak, web sunucusu günlüklerinin (Nginx veya Apache gibi) genellikle hatanın oluşumunu ve yanıt kodunu kaydettiğini, kök nedeni değil, kaydettiğini anlamak önemlidir. Bu, özellikle genellikle bir proxy görevi gören ve hatayı yalnızca arka uç uygulamadan ileten Nginx için geçerlidir.

Kullanılan web sunucusuna bağlı olarak günlükler aşağıdaki dizinlerde bulunabilir:

Apache:

  • Ubuntu/Debian: /var/log/apache2/error.log

  • CentOS/AlmaLinux/Rocky Linux: /var/log/httpd/error.log

Nginx:

  • /var/log/nginx/error.log

Sunucunuz FASTPANEL gibi bir kontrol paneli aracılığıyla yönetiliyorsa, günlükleri görüntülemek daha da kolaylaşır. Bunu yapmak için:

  • Kontrol paneline giriş yapın.

  • Site kartını açın ve “Günlükler” bölümünü bulun.

  • Ön Uç Hata Günlüğü” sekmesi Nginx web sunucusu hatalarını içerirken, “Arka Uç Hata Günlüğü” sekmesi Apache hatalarını içerir.

Birçok CMS ve çerçevenin (WordPress, Laravel, Joomla vb.) kendi hata günlüklerini tuttuğunu unutmayın. kendi hata günlüklerini tuttuğunu unutmayın. Bu günlükler genellikle 500 hatasının nedeni hakkında daha kesin bilgiler sağlar. Bu günlüklerin nerede saklandığını bulmak için platformunuzun belgelerine başvurun.

Günlükler, büyük olasılıkla neyin ters gittiği konusunda size ayrıntılı bir içgörü sağlayacaktır. Eğer 500 hatası yanlış yapılandırma veya kod sorunları nedeniyle tetiklenirse, hataya neden olan dosyaları—hatta kesin satırları—görebilirsiniz.

  1. PHP tarafı hata günlüklemesini etkinleştirin

Daha ayrıntılı teşhisler almak için, özellikle hata kodda oluştuğunda ve web sunucusu günlüklerinde görünmediğinde, PHP içinde günlüklemeyi doğrudan etkinleştirin.

Bunu yapmak için php.ini dosyasında aşağıdaki değerleri ayarlayın:

display_errors = Off

log_errors = On

error_log = /var/log/php_errors.log

Burada:

  • display_errors — tarayıcıda hata çıktısını gizler

  • log_errors — hataları bir günlük dosyasına yazar

  • error_log — günlük dosyasına yol (PHP'nin yazma izinleri olmalı)

Tipik php.ini konumları:

  • Debian/Ubuntu: /etc/php/*/apache2/php.ini veya /etc/php/*/cli/php.ini

  • CentOS/AlmaLinux: /etc/php.ini

Veya şunu bularak bulun:

php -i | grep "php.ini"

FASTPANEL'de: site kartını açın → “PHP Ayarları”, display_errors gibi değişkenleri arayın, değerlerini değiştirin ve “Kaydet” düğmesine tıklayın.

  1. .htaccess dosyasını kontrol edin

Hata .htaccess düzenlemesinden sonra ortaya çıktıysa, dosyayı önceki durumuna geri yükleyin.

Tam olarak neyin değiştiğinden emin değilseniz, .htaccess dosyasını geçici olarak yeniden adlandırın (örneğin, .htaccess.bak olarak) — hata kaybolursa, sorun bu dosyada demektir.

Bu durumda, varsa .htaccess dosyasını yedekten geri yüklemeyi deneyin veya popüler CMS'ler için varsayılan .htaccess dosyasını buradan buraya alarak kullanın.

  1. Dosya izinlerini ve sahipliğini doğrulayın

Yanlış izinler 500'ü tetikleyebilir. Site kökünün ve tüm alt dosyaların doğru haklara ve sahibe sahip olduğundan emin olun:

ls -laR /path/to/your/site/root

Önerilen izinler:

  • Dizinler için: 755 — sahibe okuma, yazma ve yürütme izni; diğer herkese okuma ve yürütme izni.

  • Dosyalar için: 644 — sahibe okuma ve yazma izni; diğer herkese yalnızca okuma izni.

Sahiplik:

Dosyalar ve klasörler web sunucusu kullanıcısına (örneğin, www-data veya apache) ait olmalıdır.

Gerekirse, aşağıdaki komutları kullanarak izinleri ve sahipliği ayarlayabilirsiniz:

  • Sitenizin kök dizinine gidin:
cd /path/to/root/directory/site
  • Doğru sahipliği ve izinleri ayarlayın:
sudo chown -R yoursiteuser:yoursiteuser . && sudo chmod 644 . -R && sudo chmod +X . -R

Lütfen yoursiteuser yerine sitenize sahip olan gerçek kullanıcı ve grupla değiştirin.

  1. Eklentileri ve temaları devre dışı bırakın.

WordPress gibi CMS tarafından yönetilen sitelerde, 500 hatası genellikle eklenti veya tema çakışmalarından kaynaklanır. Tüm eklentileri devre dışı bırakın ve sorunu çözüp çözmediğini görmek için varsayılan bir temaya geçin.

  1. Sunucunun siteleriniz için yeterli boş kaynağa sahip olduğundan emin olun.
  • Yeterli boş disk alanınız olduğundan emin olun:
sudo df -h
  • Sunucunun inode'larının tükenmediğini kontrol edin:
sudo df -ih
  • Sunucunun yeterli RAM'e sahip olduğundan emin olun:
sudo free -mh
  • Mevcut CPU yükünü kontrol edin:
sudo ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head
  • Alternatif olarak, işlem izleyicisini şu komutla açın:
sudo top

Disk alanı veya inode'lar tükendiyse, ilgili makaledeki yönergeleri izleyerek en çok alanı hangi dosyaların ve dizinlerin tükettiğini belirleyebilirsiniz.

RAM veya CPU yükü aşırı derecede yüksekse, nedenler değişebilir. Araştırmanıza arama motoru botlarını engellemekle başlayın, çünkü bunlar genellikle artan yükün kaynağıdır.

  1. DBMS'nin sağlıklı olduğundan emin olun.

Çoğu zaman bu MySQL olacaktır; veritabanlarınızın iyi durumda olup olmadığını kontrol etmek için birkaç hızlı adım aşağıdadır.

  • MySQL hizmetinin çalıştığını doğrulayın:
sudo systemctl status mysql
  • MySQL hata günlüğünü kontrol edin:
sudo grep -i error /var/log/mysql/error.log
  • Tüm veritabanlarında hata olup olmadığını kontrol edin:
mysqlcheck -A -c

Hata bulunursa, öncelikle etkilenen veritabanlarının yedeklerinin olduğundan kesin olarak emin olun. Gerekirse, bununla bir döküm oluşturun:

mysqldump -u [user] -p [database_name] > /path/to/file/dump.sql
  • [user] yerine MySQL kullanıcı adını girin.

  • [database_name] yerine dışa aktarmak istediğiniz veritabanının adını girin.

  • /path/to/dump.sql dökümü dosyasının kaydedileceği yoldur.

Bundan sonra, hata düzeltme prosedürünü mysqlcheck ile çalıştırın:

mysqlcheck -A --auto-repair -c
  1. Hosting sağlayıcınızla iletişime geçin.

Sorunu belirleyemiyorsanız, hosting sağlayıcınızın desteğiyle iletişime geçmeye değer olabilir. Kullanıcı düzeyinde görünmeyen sunucu sorunlarını belirlemeye yardımcı olabilir. Doğru hosting sağlayıcısını nasıl seçeceğiniz hakkında bu makaleden bilgi edinebilirsiniz.


Sonuç

500 Hatası web siteniz için bir sonuç değildir. Temel tanılama araçlarının yardımıyla, nedeni hızlı bir şekilde bulabilir ve sorunu düzeltebilirsiniz. Yeteneklerinizden emin değilseniz, her zaman uzmanlara başvurabilirsiniz. Zamanında bulunan ve düzeltilen 500 hatasının gelecekte daha ciddi sorunlardan kaçınmanıza yardımcı olacağını unutmamak önemlidir.