Hosting & Sunucu

500 Internal Server Error hatasını çözme

500 hatası, en yaygın sunucu hatalarından biridir. Bu makalede, hata günlüğünden htaccess'e ve PHP belleğine kadar sorun giderme yolunu adım adım öğreneceksiniz.

Hosting & Sunucu

500 Hatası Nedir ve Neden Oluşur?

500 Internal Server Error, sunucunun dahili bir sorunla karşılaştığını ancak ayrıntıları tarayıcıya gösteremediğini belirten en yaygın HTTP hatalarından biridir. Bu hata, bozuk bir .htaccess dosyasından PHP belleği yetersizliğine veya yanlış dosya izinlerine kadar çeşitli sorunlardan kaynaklanabilir. 404 veya 403 hatalarının aksine, 500 hatasını gidermek sistematik bir inceleme gerektirir.

Bu makalede, bu hatayı gidermek için adım adım bir yol sunuyoruz. Siteniz paylaşımlı hosting, VPS veya özel sunucuda çalışıyor olsun; aşağıdaki adımlar hemen hemen tüm ortamlarda geçerlidir. Hosting hizmetleri kullanıyorsanız, ServerNet gibi şirketler, günlüklere ve PHP ayarlarına erişim için uygun yönetim araçları sağlar.

Adım Bir: Hata Günlüğünü (Error Log) İnceleme

500 hatasını gidermek için en önemli araç sunucu hata günlüğüdür. Günlüğü görmeden, karanlıkta iğne aramak gibidir. Barındırma ortamına bağlı olarak, günlükler farklı yerlerde saklanır.

cPanel'de Günlüğe Erişim

cPanel kullanıyorsanız:

  1. Metrics bölümündeki Error Log kısmına gidin.
  2. Son hataları inceleyin. Genellikle PHP veya Apache ile ilgili hatalar, zaman damgasıyla kaydedilir.
  3. PHP Fatal error veya Internal Server Error ifadelerini içeren hataları arayın.

Linux Sunucularda Günlüğe Erişim (SSH)

Sunucuya SSH erişiminiz varsa, günlükleri aşağıdaki komutlarla inceleyebilirsiniz:

# Apache günlüğü (Debian/Ubuntu tabanlı dağıtımlar)
tail -100 /var/log/apache2/error.log

# Apache günlüğü (RHEL/CentOS tabanlı dağıtımlar)
tail -100 /var/log/httpd/error_log

# Nginx günlüğü
tail -100 /var/log/nginx/error.log

tail -100 komutu son 100 satırı gösterir. Hata çoksa, filtrelemek için grep kullanabilirsiniz:

grep "500" /var/log/apache2/error.log | tail -20

PHP Hata Gösterimini Geçici Olarak Etkinleştirme

Bazen sunucu günlüğü boştur veya erişiminiz yoktur. Bu durumlarda, aşağıdaki kodu wp-config.php dosyasına (WordPress'te) veya ana uygulama dosyasına ekleyerek hataları tarayıcıda görebilirsiniz:

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

Önemli Not: Bunu yalnızca geçici olarak yapın ve hatayı giderdikten sonra kodu kaldırın, çünkü hataları canlı ortamda (production) göstermek güvenlik riski oluşturur.

Adım İki: .htaccess Dosyasını İnceleme

.htaccess dosyası, 500 hatasının en yaygın nedenlerinden biridir. Yeniden yazma kurallarında (rewrite rules) küçük bir yazım hatası veya izinsiz yönergeler sunucuyu çalışmaz hale getirebilir.

htaccess'i Geçici Olarak Devre Dışı Bırakarak Test Etme

Bunu teşhis etmenin en kolay yolu, .htaccess dosyasını geçici olarak yeniden adlandırmaktır:

  1. FTP veya cPanel dosya yöneticisi aracılığıyla site köküne (public_html) gidin.
  2. .htaccess dosyasını .htaccess_old olarak yeniden adlandırın.
  3. Siteyi yeniden yükleyin. Hata düzeldiyse, sorun htaccess'tendir.

Site çalışıyorsa, yeni ve temiz bir .htaccess dosyası oluşturabilirsiniz. WordPress için varsayılan içeriği aşağıya ekleyin:

# BEGIN WordPress
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress

Yaygın Hata: htaccess'te İzinsiz Yönergeler

php_value veya php_flag gibi bazı Apache yönergeleri yalnızca httpd.conf veya vhost dosyasında izinlidir ve htaccess'te 500 hatasına neden olur. htaccess'te PHP yönergeleri kullandıysanız, bunları php.ini veya user.ini dosyasına taşıyın.

Adım Üç: Dosya ve Klasör İzinlerini İnceleme

Yanlış izinler (permissions), 500 hatasının bir diğer yaygın nedenidir. PHP bir dosyayı okuyamaz veya yazamazsa, dahili hata oluşur.

Standart İzinler

  • Dosyalar: 644 (rw-r--r--)
  • Klasörler: 755 (rwxr-xr-x)
  • wp-config.php gibi yürütülebilir dosyalar: 600 veya 640

İzinleri SSH aracılığıyla düzeltmek için aşağıdaki komutları kullanabilirsiniz:

# Dosya izinlerini 644 olarak düzeltme
find /path/to/site -type f -exec chmod 644 {} \;

# Klasör izinlerini 755 olarak düzeltme
find /path/to/site -type d -exec chmod 755 {} \;

FTP kullanıyorsanız, FileZilla gibi yazılımlarda dosyalara sağ tıklayıp File Permissions seçeneğini seçerek izinleri değiştirebilirsiniz.

Dosya Sahipliği (Ownership)

Bazen izinler doğrudur ancak dosya sahipliği yanlıştır. Paylaşımlı hostinglerde genellikle nobody veya www-data kullanıcısı dosyaların sahibi olmalıdır. SSH erişiminiz varsa:

chown -R www-data:www-data /path/to/site

Not: Kullanıcı ve grup adı farklı dağıtımlarda değişebilir (örneğin CentOS'ta apache).

Adım Dört: PHP Bellek Sınırını İnceleme

PHP bellek yetersizliği (memory limit), 500 hatasının gizli nedenlerinden biridir. Bir PHP betiği izin verilen bellekten fazlasını tükettiğinde, sunucu dahili hata döndürür.

wp-config.php'de PHP Belleğini Artırma (WordPress)

WordPress kullanıyorsanız, aşağıdaki satırı wp-config.php dosyasına ekleyin:

define('WP_MEMORY_LIMIT', '256M');

Bu, WordPress için PHP belleğini 256 megabayta çıkarır. Varsayılan değer genellikle 40M veya 64M'dir.

php.ini'de Belleği Artırma

php.ini dosyasına erişiminiz varsa, aşağıdaki değeri değiştirin:

memory_limit = 256M

Paylaşımlı hostinglerde genellikle cPanel üzerinden MultiPHP INI Editor bölümünden bu değeri değiştirebilirsiniz.

Basit Kodla Bellek Kullanımını Kontrol Etme

Sorunun bellekten kaynaklanıp kaynaklanmadığını test etmek için, aşağıdaki içeriğe sahip basit bir PHP dosyası oluşturun ve çalıştırın:

<?php
echo 'Memory limit: ' . ini_get('memory_limit');
?>

Bu dosya hatasız çalışıyorsa, sorun muhtemelen başka bir yerdedir.

Adım Beş: Eklenti ve Temaları Sorun Giderme (WordPress)

Siteniz WordPress tabanlıysa ve yukarıdaki adımlar işe yaramadıysa, muhtemelen bozuk bir eklenti veya tema 500 hatasına neden oluyordur.

Tüm Eklentileri Devre Dışı Bırakma

En kolay yol, FTP veya dosya yöneticisi aracılığıyla wp-content/plugins klasörünü geçici olarak yeniden adlandırmaktır:

  1. wp-content klasörüne gidin.
  2. plugins klasörünün adını plugins_old olarak değiştirin.
  3. Siteyi kontrol edin. Hata düzeldiyse, yeni bir plugins klasörü oluşturun ve eklentileri tek tek etkinleştirerek sorunlu olanı bulun.

Temayı Varsayılana Değiştirme

Sorun temadan kaynaklanıyorsa, FTP aracılığıyla wp-content/themes klasörüne gidin ve mevcut tema klasörünün adını değiştirin. WordPress otomatik olarak varsayılana (örneğin Twenty Twenty-Four) döner.

Adım Altı: Sunucu Belleği ve Kaynaklarını İnceleme

Bazen 500 hatası, sunucu kaynaklarının (RAM veya CPU) yetersizliğinden kaynaklanır. Bu sorun, sınırlı kaynaklara sahip paylaşımlı hostinglerde daha yaygındır.

cPanel'de Kaynak Kullanımını Kontrol Etme

cPanel'de Resource Usage bölümüne gidin ve sınırlarınıza yaklaşıp yaklaşmadığınızı görün. RAM veya CPU kullanımı sürekli %100'e ulaşıyorsa, ya ağır betikleri optimize etmeli ya da hosting planınızı yükseltmelisiniz.

SSH'de top Komutuyla Kontrol Etme

Sunucuya SSH erişiminiz varsa, top komutunu çalıştırın ve hangi işlemlerin en fazla kaynağı tükettiğini görün:

top -b -n 1 | head -20

Bir PHP işlemi sürekli yüksek kullanım gösteriyorsa, kodunuzda bir kötü amaçlı betik veya sonsuz döngü (infinite loop) olabilir.

Sonuç ve Özet

500 hatasını gidermek genellikle sabır ve sistematik inceleme gerektirir. Önerilen yol sırası:

  1. Hata günlüğünü inceleme (en önemli adım)
  2. .htaccess dosyasını inceleme
  3. Dosya izinlerini inceleme
  4. PHP bellek sınırını inceleme
  5. Eklenti ve temaları sorun giderme (WordPress'te)
  6. Sunucu kaynaklarını inceleme

Tüm bu adımları uyguladıktan sonra hata hala devam ediyorsa, sorun Apache/Nginx ayarları veya modüllerinden kaynaklanıyor olabilir ve hosting destek ekibinin müdahalesini gerektirebilir. Bu durumda, hata günlüğünü desteğe ileterek sorun giderme sürecini hızlandırın.

Herhangi bir değişiklik yapmadan önce önemli dosyalarınızın (örneğin .htaccess ve wp-config.php) yedeğini almayı unutmayın. Bu, sizi olası sorunlardan kurtarır.

ServerNet Destek

ServerNet mühendislik ve yayın ekibi — altyapı, ağ ve web barındırma uzmanları.

İletişim
Paylaş:

Yorumlar 0

Henüz yorum yok — ilk siz olun!

Yorum bırakın