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

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:
- Sunucu tarafı kaynak sorunları
Çoğu zaman 500 hatası, kaynak eksikliği (RAM, CPU süresi) gibi sunucudaki teknik sorunlardan kaynaklanabilir.
- 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.
- .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.
- 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
- 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.
- 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.iniveya/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.
- .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.
- 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.
- 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.
- 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.
- 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.sqldö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
- 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.