500 Internal Server Error Çözümü: Nedenleri ve Adım Adım Teşhis
500 Internal Server Error, web sunucusunun isteği işlerken beklenmedik bir sorunla karşılaştığını ama nedenini tarayıcıya açıklayamadığını bildiren genel bir HTTP durum kodudur. Ziyaretçi yalnızca standart bir hata sayfası görür; asıl açıklama sunucudaki hata günlüğüne yazılır. Bu yüzden çözüm tahminle değil, günlükteki o tek satırı bulmakla başlar.
Hatanın kaynağı çoğu zaman sunucu donanımı değil, hesabınızdaki bir dosyadır: bozuk bir .htaccess satırı, ölümcül bir PHP hatası ya da yanlış bir dosya izni. Aşağıdaki kontrol sırası LIONFIN web hosting hesaplarındaki cPanel ve Plesk araçlarına göre hazırlandı; mantığı her Linux hostingde aynıdır.
Kısa cevap
500 Internal Server Error, sunucu tarafında oluşan ve nedeni ziyaretçiye gösterilmeyen genel bir hatadır. En sık nedenleri hatalı bir .htaccess satırı, ölümcül PHP hatası, yanlış dosya izinleri, yetersiz bellek ve eklenti ya da PHP sürümü uyumsuzluğudur. Çözüm için önce hata günlüğünü okuyun; ardından .htaccess dosyasını geçici olarak devre dışı bırakın, izinleri 755/644 yapın, PHP sürümünü ve bellek sınırını kontrol edin.
500 Internal Server Error nedir, diğer 5xx hatalarından farkı ne?
500 kodu, sunucunun “bir şeyler ters gitti, daha uygun bir kod da yok” demesidir; hata istemcide değil, sunucu tarafındaki yapılandırmada ya da uygulamadadır. Tarayıcı değiştirmek veya önbelleği temizlemek bu yüzden sonucu değiştirmez. Aynı ailedeki kodlar ise farklı yerlere işaret eder:
| Kod | Anlamı | İlk bakılacak yer |
|---|---|---|
500 | Genel sunucu hatası | Hata günlüğü, .htaccess, PHP hataları |
502 Bad Gateway | Ara sunucu, arka uçtan (ör. PHP-FPM) geçersiz yanıt aldı | PHP süreçleri, sunucu durumu |
503 Service Unavailable | Hizmet geçici olarak yanıt veremiyor | Bakım modu, aşırı yük, kaynak limitleri |
504 Gateway Timeout | Arka uç zamanında yanıt vermedi | Uzun süren betikler, yavaş sorgular |
508 Resource Limit Is Reached | CloudLinux kaynak limitine ulaşıldı | Eşzamanlı süreç (EP) sayısı |
Hatanın tüm sayfalarda mı, yalnızca yönetici panelinde mi, yoksa belirli bir işlemde (form gönderme, görsel yükleme) mi çıktığını not edin; bu ayrım teşhisi belirgin biçimde kısaltır. Kaynak limitleriyle ilişkili olabilen 503 ve 508 kodları için hosting kaynak limitleri rehberine bakın.
500 hatası neden olur?
500 hatası çoğunlukla hesabınızdaki bir yapılandırma ya da kod sorunundan doğar; paylaşımlı hostingde vakaların büyük kısmı şu yedi nedenden birine dayanır:
- .htaccess sözdizimi hatası: Yanlış yazılmış bir yönerge, sunucuda yüklü olmayan bir modüle ait satır ya da PHP-FPM ortamında kullanılan
php_valuesatırı tüm siteyi durdurur. - Ölümcül PHP hatası (fatal error): Eksik dosya, tanımsız fonksiyon ya da sözdizimi hatası içeren bir eklenti, tema veya özel kod.
- Dosya izinleri ve sahiplik: Betiği hesap kullanıcısıyla çalıştıran suPHP ve suEXEC benzeri yapılandırmalarda gruba ya da herkese yazılabilir dosyalar (
777,775,666) güvenlik gereği çalıştırılmaz. Başka bir kullanıcıya ait dosyalar da aynı sonucu doğurabilir. - Bellek sınırı: Betik
memory_limitdeğerini aştığında “Allowed memory size … exhausted” hatasıyla durur. - Eklenti ya da tema çakışması: Güncelleme sonrası iki eklentinin aynı fonksiyonu ya da sınıfı tanımlaması veya bir eklentinin, bağlı olduğu başka bir eklentinin uyumlu sürümünü bulamaması.
- PHP sürümü uyumsuzluğu: Sürüm yükseltmesinden sonra kaldırılmış fonksiyonlara dayanan eski kod; sık kırılan kalıplar PHP 8 güncelleme rehberi yazısında listelenir.
- Zaman aşımı:
max_execution_timesüresini aşan içe aktarma, yedekleme ya da rapor betikleri. Web sunucusu ya da proxy kaynaklı zaman aşımı ise çoğunlukla 504 olarak görünür.
Hatanın son yapılan bir değişiklikten hemen sonra başlaması güçlü bir ipucudur: eklenti güncellemesi, PHP sürümü değişikliği ve .htaccess düzenlemesi ilk şüphelilerdir.
500 Internal Server Error nasıl çözülür? Adım adım kontrol sırası
500 hatası, günlükten başlayıp en kolay geri alınabilen nedenden en zoruna doğru ilerleyerek çözülür; her adımdan sonra sayfayı gizli pencerede yeniden deneyin:
- Hata günlüğünü okuyun. Satır çoğu zaman dosya adını ve satır numarasını verir; günlüğün yeri bir sonraki bölümde anlatılır.
.htaccessdosyasını devre dışı bırakın. Adını.htaccess.yedekolarak değiştirin; site açılıyorsa sorun bu dosyadadır, satırları tek tek geri ekleyerek hatalı olanı bulun.- İzinleri kontrol edin. Klasörler
755, dosyalar644olmalı;777izinli öğeleri düzeltin. - Uygulama hatasını görünür yapın. WordPress’te
WP_DEBUGile hatayı günlüğe yazdırın, sorunlu eklentiyi klasör adını değiştirerek kapatın. - PHP sürümünü değiştirin. Hata bir sürüm değişikliğinin hemen ardından başladıysa önceki sürüme dönüp kodu güncelleyin. Linux hosting paketlerinde PHP sürümünü panelden kendiniz seçersiniz; adımlar cPanel PHP sürümü değiştirme rehberinde.
- Bellek sınırını yükseltin. Günlükte bellek hatası varsa
memory_limitdeğerini artırın. - Son değişikliği geri alın. Hiçbiri sonuç vermezse hatanın başladığı saatten önceki yedeğe dönmeyi değerlendirin.
Dosyaları tarayıcıdan düzenlemek için cPanel dosya yöneticisi yeterlidir; nokta ile başlayan dosyaları görmek için gizli dosya görünümünü açmayı unutmayın.
Hata günlüğü nerede, satırlar nasıl okunur?
Hata günlüğü cPanel’de Metrics → Errors ekranında ve sitenin klasörlerindeki error_log dosyalarında, Plesk’te ise alan adının Logs ekranında bulunur. Errors ekranı web sunucusunun hesabınıza ait son kayıtlarını listeler; PHP hataları ise çoğu yapılandırmada hatayı üreten betiğin klasöründeki error_log dosyasına yazılır, bu yüzden public_html ve wp-admin klasörlerine bakın. PHP-FPM kullanan cPanel hesaplarında aynı kayıtlar ana dizindeki logs klasöründe, alan adınızı içeren .php.error.log uzantılı bir dosyada da olabilir. Plesk’te filtreyi hata kayıtlarına çevirmeniz yeterlidir. Tipik satırlar (tarih alanları kısaltıldı):
[core:alert] [client 203.0.113.10] /home/kullanici/public_html/.htaccess: Invalid command 'RewriteRul', perhaps misspelled or defined by a module not included in the server configuration
PHP Fatal error: Uncaught Error: Call to undefined function mysql_connect() in /home/kullanici/public_html/inc/db.php:12
PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) in /home/kullanici/public_html/wp-content/plugins/ornek-eklenti/import.php on line 88İlk satır .htaccess içindeki bir yazım hatasını, ikincisi yeni PHP sürümünde artık bulunmayan bir fonksiyonu, üçüncüsü 128 MB bellek sınırının aşıldığını gösterir. Ölümcül hatalarda satırdaki dosya yolu genellikle suçluyu verir: wp-content/plugins/ sonrasındaki klasör adı sorunlu eklentidir. Bellek hatalarında ise yol yalnızca belleğin tükendiği yeri gösterir; asıl tüketen başka bir bileşen olabilir.
.htaccess ve dosya izinlerinden kaynaklanan 500 nasıl düzeltilir?
.htaccess kaynaklı hatalarda dosyayı sıfırdan yazmak yerine günlükte adı geçen yönergeyi düzeltmek ya da kaldırmak daha güvenlidir. WordPress’te dosyayı yeniden adlandırdıktan sonra Ayarlar → Kalıcı Bağlantılar ekranında Değişiklikleri Kaydet düğmesine basmak standart kuralları yeniden üretir. PHP-FPM kullanan bir hesapta IfModule bloğu dışında kalan php_value ya da php_flag satırını silip aynı ayarı .user.ini dosyasına taşıyın. Bazı paylaşımlı sunucular güvenlik gereği Options +FollowSymLinks satırına izin vermez; yerine Options +SymLinksIfOwnerMatch yazın. Kural örnekleri .htaccess kullanımı rehberindedir.
İzin sorunlarını SSH ya da cPanel Terminal üzerinden topluca bulup düzeltebilirsiniz:
# Gruba ya da herkese yazılabilir öğeleri listeleyin
find ~/public_html \( -perm -g=w -o -perm -o=w \) -ls | head -50
# Klasörleri 755, dosyaları 644 yapın
find ~/public_html -type d -exec chmod 755 {} +
find ~/public_html -type f -exec chmod 644 {} +İkinci blok tüm klasör ve dosyaları standart izinlere çeker; ardından wp-config.php gibi hassas dosyaları 600 ya da 640, varsa cgi-bin içindeki çalıştırılabilir betikleri yeniden 755 yapın. Dosyaların sahibi başka bir kullanıcıysa sahipliği siz değiştiremezsiniz; destek ekibi düzeltir.
WordPress’te 500 hatası: eklenti, tema ve bellek
WordPress sitelerinde 500 hatasının en yaygın kaynağı bir eklenti ya da temadır ve hata çoğunlukla bir güncellemenin hemen ardından başlar. WordPress’in “kritik hata” sayfası da arka planda 500 kodu döndürür ve yönetici adresine kurtarma modu bağlantısı içeren bir e-posta gönderir; bu e-posta geldiyse sorunlu eklentiyi oradan kapatabilirsiniz. Gelmediyse hatayı ziyaretçiye göstermeden günlüğe yazdırmak için wp-config.php dosyasına ekleyin:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);Hata wp-content/debug.log dosyasına düşer. Suçluyu bulmak için wp-content/plugins klasörünün adını geçici olarak plugins.kapali yapın; site açılırsa klasöre eski adını verin ve eklentileri yönetici panelinden tek tek etkinleştirerek hatayı yeniden üreteni belirleyin. Tema için aynı yöntemi etkin tema klasöründe uygulayın; varsayılan bir tema yüklüyse WordPress ona geçer. Teşhis bitince WP_DEBUG değerini false yapıp debug.log dosyasını silin. Ekranın tamamen boş kaldığı durumlar için WordPress beyaz ekran hatası, bellek hataları için PHP memory limit artırma rehberine bakın.
Ne zaman destek talebi açmalı, talepte neler olmalı?
Günlükte hiç kayıt yoksa, hata hesabınızdaki tüm sitelerde aynı anda başladıysa ya da yukarıdaki adımlar sonuç vermediyse sorun sunucu yapılandırmasında olabilir; bu noktada müşteri paneli → Destek üzerinden talep açın. Hızlı sonuç için talebe şunları ekleyin:
- Hatanın göründüğü tam adres ve hatanın sürekli mi, aralıklı mı olduğu.
- Hatanın başladığı yaklaşık tarih ve saat.
- Hemen öncesinde yapılan değişiklik: eklenti güncellemesi, PHP sürümü,
.htaccessdüzenlemesi, taşıma. - Günlükte gördüğünüz satır, ekran görüntüsü yerine metin olarak.
- Denediğiniz adımlar ve her birinin sonucu.
Bu bilgiler ekibin aynı kontrolleri baştan yapmasını önler. Talep açma adımları destek talebi oluşturma rehberindedir. Şifre ya da kart bilgisi gibi gizli verileri talep metnine yazmayın.
Sık Sorulan Sorular
500 hatası sitemin Google sıralamasını etkiler mi?
Birkaç saatlik bir 500 hatası sıralamayı kalıcı olarak etkilemez; arama motorları sunucu hatalarını geçici kabul eder ve sayfayı daha sonra yeniden tarar. Hata günlerce sürerse tarama sıklığı düşer ve etkilenen sayfalar dizinden çıkabilir. Bu yüzden hatayı hızla gidermek ve Search Console’daki tarama hatası raporunu izlemek gerekir.
500 hatası yalnızca bazı kullanıcılarda görünüyorsa neden olabilir?
Hata belirli bir işleme, sayfaya ya da kullanıcı rolüne bağlı olabilir: örneğin yalnızca yöneticilerin açtığı bir ekranda, sepete ürün eklerken ya da belirli bir çerezle çalışan bir eklentide oluşan PHP hatası. Hatanın göründüğü adresi ve adımları kaydedip aynı saatteki günlük satırını bulun; aralıklı hatalar kaynak limitlerine de işaret edebilir.
.htaccess dosyasını silersem site bozulur mu?
Silmek yerine adını değiştirin; böylece istediğiniz an geri alabilirsiniz. Dosya devre dışıyken site açılır ama yönlendirmeler, kalıcı bağlantılar, önbellek kuralları ve erişim kısıtlamaları çalışmaz. WordPress’te kalıcı bağlantı ayarını kaydetmek temel kuralları yeniden üretir; özel kurallarınızı ise yedekten tek tek geri eklemeniz gerekir.
Dosya izinlerini 777 yapmak 500 hatasını çözer mi?
Hayır, çoğu zaman sorunu büyütür. Betiği hesap kullanıcısıyla çalıştıran sunucularda herkese yazılabilir dosyalar güvenlik gereği çalıştırılmaz ve doğrudan 500 hatasına yol açar. Diğer ortamlarda ise 777, aynı sunucudaki başka süreçlerin dosyanıza yazmasına izin veren bir güvenlik açığıdır. Doğru değerler klasörler için 755, dosyalar için 644’tür.
Hata günlüğünde hiçbir kayıt yoksa ne yapmalıyım?
Önce doğru günlüğe baktığınızdan emin olun: cPanel Errors ekranı, site klasörlerindeki error_log dosyaları ve WordPress debug.log ayrı kaynaklardır. Hiçbirinde kayıt yoksa hata büyük olasılıkla sunucu, proxy ya da güvenlik katmanında oluşuyordur. Hatanın göründüğü adres ve saatle destek talebi açın; ekip sunucu tarafındaki günlüklere erişebilir.
Bu makale yardımcı oldu mu?
Geri bildiriminiz için teşekkürler!
kişi faydalı buldu