- Konu sahibi
- #1
HTTP 500, web sunucusunun isteği işlerken beklenmeyen bir sunucu tarafı hatasıyla karşılaştığını gösterir. Hata genellikle ziyaretçinin tarayıcısından değil; uygulama kodundan, sunucu yapılandırmasından, dosya izinlerinden, PHP gibi çalışma ortamından, bellek yetersizliğinden veya veritabanı bağlantısından kaynaklanır. Bu nedenle 500 hatası görüldüğünde ilk bakılacak yer tarayıcı değil, sunucu ve uygulama hata kayıtlarıdır.
Bir ziyaretçi yalnızca “500 Internal Server Error” mesajını görebilir. Bu mesaj kök nedeni açıklamaz; aynı durum farklı sistemlerde farklı nedenlerle oluşabilir. Ayrıntı genellikle web sunucusunun, PHP-FPM’in, uygulamanın veya barındırma panelinin hata günlüğünde bulunur.
Tarayıcı
Örneğin bir PHP dosyasında sözdizimi hatası varsa uygulama çalışmaz. Benzer şekilde hatalı bir sunucu kuralı, yanlış dosya sahibi veya izinleri, başarısız veritabanı bağlantısı ya da uygulamanın bellek sınırını aşması da 500 yanıtına yol açabilir. Nginx üzerinde hatalı yeniden yazma kuralları nedeniyle oluşan iç yönlendirme döngüleri de örnek nedenlerdendir.
Aşağıdaki tablo, hatanın nerede aranacağını hızlıca daraltır.
Tablodaki belirti tek başına kesin teşhis değildir. Aynı hata, farklı sunucu yazılımlarında farklı günlük dosyalarında görülebilir.
Eklenti destekleyen bir PHP uygulamasında yeni eklenti etkinleştirildikten hemen sonra hem ana sayfa hem de yönetim paneli 500 döndürüyorsa, eklentinin uygulama başlatılırken hata ürettiği düşünülebilir. Önce hata günlüğündeki son kayıt doğrulanır. Kayıt eklentinin dosyasını gösteriyorsa eklenti devre dışı bırakılır; ardından site yeniden denenir. Site düzelirse eklenti veya diğer bileşenlerle etkileşimi güçlü bir adaydır; bunu tek başına bütün kök nedenin kanıtı saymayın. Düzelmezse son kod, tema, PHP yapılandırması ve dosya izinleri sırayla incelenmelidir.
Sayfayı art arda yenilemek genellikle çözüm sağlamaz. Bir süre sonra tekrar deneyebilir, farklı bir sayfada da aynı hatanın bulunup bulunmadığını kontrol edebilirsiniz. Hata devam ediyorsa site sahibine URL, yaklaşık saat, yaptığınız işlem ve görünen hata kimliğiyle bildirim gönderin. Sunucu günlüklerine erişiminiz yoksa kalıcı çözüm için hosting desteğinin inceleme yapması gerekir.
Üretimde ayrıntılı yığın izi, parola, belirteç veya veritabanı bilgisini ziyaretçiye göstermeyin. Hatanın ayrıntısını erişimi sınırlı günlüklerde, kullanıcıya gösterilen olay kimliğiyle eşleştirin.
500 hatasını 404 sanmak: 404 istenen kaynağın bulunamadığını, 500 ise sunucunun isteği işlerken beklenmeyen bir sorun yaşadığını belirtir.
Yalnızca tarayıcı önbelleğini temizlemek: Bu işlem sunucu tarafındaki kod, izin veya yapılandırma hatasını düzeltmez.
Günlüğü incelemeden rastgele dosya silmek: Sorunun kanıtını ortadan kaldırabilir ve yeni hatalar oluşturabilir. Önce kayıtları yedekleyin ve değişiklikleri tek tek uygulayın.
Önce işlemin kaydedilip kaydedilmediğini kontrol edin. Sunucu değişikliği yapıp yanıt üretirken hata vermiş olabilir; özellikle POST isteğini tekrar göndermek aynı işlemi iki kez oluşturabilir. Site yöneticisi işlem kimliği ve kayıtlarla sonucu doğrulamalıdır.
500, isteği işleyen sunucunun beklenmeyen bir iç sorun yaşadığını belirtir. 502 ise ağ geçidi veya proxy konumundaki sunucunun arka uçtan geçerli bir yanıt alamadığını ifade eder. Teşhis için ilgili katmanın günlükleri incelenmelidir.
Bir ziyaretçi yalnızca “500 Internal Server Error” mesajını görebilir. Bu mesaj kök nedeni açıklamaz; aynı durum farklı sistemlerde farklı nedenlerle oluşabilir. Ayrıntı genellikle web sunucusunun, PHP-FPM’in, uygulamanın veya barındırma panelinin hata günlüğünde bulunur.
HTTP 500 hatası nasıl oluşur?
Tarayıcı
https://example.com/ adresine istek gönderir. Web sunucusu isteği karşılar ve gerekiyorsa PHP, Python veya başka bir uygulamayı çalıştırır. Bu aşamalardan biri isteği tamamlayamazsa sunucu, daha özel bir hata kodu kullanamadığı durumda 500 yanıtı döndürebilir.Örneğin bir PHP dosyasında sözdizimi hatası varsa uygulama çalışmaz. Benzer şekilde hatalı bir sunucu kuralı, yanlış dosya sahibi veya izinleri, başarısız veritabanı bağlantısı ya da uygulamanın bellek sınırını aşması da 500 yanıtına yol açabilir. Nginx üzerinde hatalı yeniden yazma kuralları nedeniyle oluşan iç yönlendirme döngüleri de örnek nedenlerdendir.
Yaygın nedenler ve ilk kontrol noktası
Aşağıdaki tablo, hatanın nerede aranacağını hızlıca daraltır.
| Belirti | Muhtemel neden | İlk kontrol | Sonraki adım |
|---|---|---|---|
| Tüm site açılmıyor | Sunucu, PHP-FPM veya genel yapılandırma sorunu | Web sunucusu ve PHP hata kayıtları | Son değişikliği geri alıp servis durumunu inceleyin |
| Yalnızca tek sayfa hata veriyor | Uygulama kodu, eklenti veya tema hatası | İstek zamanı ve uygulama günlüğü | İlgili bileşeni geçici olarak devre dışı bırakın |
| Değişiklikten hemen sonra başladı | Hatalı yapılandırma, kod veya izin | Son dağıtım ve dosya değişiklikleri | Yedekten veya sürüm geçmişinden geri dönün |
| Aralıklı görülüyor | Bellek, işlem limiti, yoğunluk veya dış servis sorunu | Zaman damgalı sunucu ve uygulama kayıtları | Kaynak kullanımını ve bağımlı servisleri karşılaştırın |
HTTP 500 hatası nasıl teşhis edilir?
- Hatanın kapsamını belirleyin. Ana sayfa, yönetim paneli, yalnızca belirli bir URL veya tüm alan adı mı etkileniyor kontrol edin.
- Hatayı ne zaman başladığıyla eşleştirin. Eklenti, tema, uygulama kodu, sunucu kuralı, PHP sürümü veya izin değişikliğinden hemen sonra başladıysa önce bu değişikliği inceleyin.
- Web sunucusunun hata günlüğünü açın. Nginx için genellikle
error.log, Apache içinerror_logbenzeri kayıtlar kullanılır; kesin konum barındırma yapılandırmasına bağlıdır. - Uygulama ve çalışma ortamı kayıtlarını kontrol edin. PHP kullanılıyorsa PHP-FPM günlüğüyle birlikte uygulamanın kendi günlüklerini inceleyin.
- Günlükteki zaman damgasını istek zamanı ile eşleştirin.
Permission denied,syntax error, bellek hatası, veritabanı bağlantı hatası veya yeniden yönlendirme döngüsü gibi ifadeler doğrudan sonraki işlemi gösterir. - Kanıtlanan nedeni düzelttikten sonra aynı URL’yi yeniden test edin ve aynı hatanın günlüğe tekrar yazılıp yazılmadığını kontrol edin. Önbellek temizleme veya servis yeniden yükleme işlemini ancak değişiklik bunu gerektiriyorsa yapın.
Örnek: Eklenti değişikliğinden sonra 500
Eklenti destekleyen bir PHP uygulamasında yeni eklenti etkinleştirildikten hemen sonra hem ana sayfa hem de yönetim paneli 500 döndürüyorsa, eklentinin uygulama başlatılırken hata ürettiği düşünülebilir. Önce hata günlüğündeki son kayıt doğrulanır. Kayıt eklentinin dosyasını gösteriyorsa eklenti devre dışı bırakılır; ardından site yeniden denenir. Site düzelirse eklenti veya diğer bileşenlerle etkileşimi güçlü bir adaydır; bunu tek başına bütün kök nedenin kanıtı saymayın. Düzelmezse son kod, tema, PHP yapılandırması ve dosya izinleri sırayla incelenmelidir.
Ziyaretçiyseniz ne yapabilirsiniz?
Sayfayı art arda yenilemek genellikle çözüm sağlamaz. Bir süre sonra tekrar deneyebilir, farklı bir sayfada da aynı hatanın bulunup bulunmadığını kontrol edebilirsiniz. Hata devam ediyorsa site sahibine URL, yaklaşık saat, yaptığınız işlem ve görünen hata kimliğiyle bildirim gönderin. Sunucu günlüklerine erişiminiz yoksa kalıcı çözüm için hosting desteğinin inceleme yapması gerekir.
Üretimde ayrıntılı yığın izi, parola, belirteç veya veritabanı bilgisini ziyaretçiye göstermeyin. Hatanın ayrıntısını erişimi sınırlı günlüklerde, kullanıcıya gösterilen olay kimliğiyle eşleştirin.
Sık yapılan hatalar
500 hatasını 404 sanmak: 404 istenen kaynağın bulunamadığını, 500 ise sunucunun isteği işlerken beklenmeyen bir sorun yaşadığını belirtir.
Yalnızca tarayıcı önbelleğini temizlemek: Bu işlem sunucu tarafındaki kod, izin veya yapılandırma hatasını düzeltmez.
Günlüğü incelemeden rastgele dosya silmek: Sorunun kanıtını ortadan kaldırabilir ve yeni hatalar oluşturabilir. Önce kayıtları yedekleyin ve değişiklikleri tek tek uygulayın.
Sık sorulan sorular
500 döndüren sipariş veya formu hemen yeniden göndermeli miyim?
Önce işlemin kaydedilip kaydedilmediğini kontrol edin. Sunucu değişikliği yapıp yanıt üretirken hata vermiş olabilir; özellikle POST isteğini tekrar göndermek aynı işlemi iki kez oluşturabilir. Site yöneticisi işlem kimliği ve kayıtlarla sonucu doğrulamalıdır.
HTTP 500 ile HTTP 502 arasındaki fark nedir?
500, isteği işleyen sunucunun beklenmeyen bir iç sorun yaşadığını belirtir. 502 ise ağ geçidi veya proxy konumundaki sunucunun arka uçtan geçerli bir yanıt alamadığını ifade eder. Teşhis için ilgili katmanın günlükleri incelenmelidir.