500 Internal Server Error hatası genelde sunucu kaynaklı bir hatadır. Sitenizin oluşturduğu aşırı trafik veya hazır bir yazılım(WordPress, Joomla, Drupal) ve benzeri temanız dan kaynaklanan time out süresi kısıtlı olduğunda da bu hatayı alabilirsiniz. Linux veya Windows Hosting'ler de aldığımız genel daha uyarısı olan 500 - 501 Internal Server Error hata ve çözümlerini sıralayacak olursak;
1) Bu hatayı aldığınız dizindeki dosyalar/klasörler yanlış chmod(Yetki) ayarlarına sahip olabilir.
Hatayı aldığınız dizine giderek CHMOD ları kontrol edin ve 777 olanları maximum 755 olarak ayarlayın. Dizin yani dosyalar/klasörler dışında sayfa dosyalarının (index.php, sayfa.php, anasayfa.aspx) varsayılan CHMOD değeri ise 644 olmalıdır. Linux'de public_html klasörü için yetki işlemlerini SSH üzerinden bu işlemi yapabilirsiniz.
Bu işlemi Windows sunucu üzerinde yapmak isterseniz; Internet Information Services (IIS) Manager kısmından ilgili sitenin dosya kısmına geliyoruz.
Local Disk > inetpub > vhosts > İlgili Domain > httpdocs klasörüne sağ tıklayıp Özellikler (Properties) diyerek Güvenlik(Security) kısmından Edit'e tıklayıp Add diyerek Everyone özelliğini ekleyin. Full Control ve altındaki tüm kutucukları seçip Apply sonra Ok dedikten sonra sunucu üzerinden Permission(Yetki) ayarlarını görülebilir yapmış olacaksınız.
2) Chmod ayarlarınızda bir problem yoksa hatayı aldığınız dizinde yanlış yapılandırılmış bir .htaccess dosyası mevcut olabilir.
Sitenizdeki .htaccess dosyasını yedekleyip , dizinden silin ve sitenizin çalışıp çalışmadığını F5 yaparak tekrar tarayıcıdan kontrol edin. Eğer sildiğinizde siteniz tekrar çalışır konuma geçiyorsa .htaccess dosyasında yaptığınız değişiklikleri silin ve siteniz için varsayılan .htaccess dosyasını yükleyin.
3) Windows sunucularda Plesk panele yönetici olarak girip geçici olarak PHP Open Basedir özelliğini kapatabilirsiniz. Sitenin PHP Ayarları kısmından open_basedir seçeneğini none diyerek geçici deaktif edip siteyi tekrar kontrol ediniz. Sorun open_basedir'dan kaynaklanmıyorsa tekrar aktif edebilirsiniz.
4) Linux WordPress 500 Hatası
wp-content/plugins dosyanızın ismini değiştirmek işe yarayabiliyor. Plugins dosyasının isminin sonuna "1" rakamı ekleyerek plugins1 yapın. WordPress sitenize geri dönün ve admin panelinizden giriş yapın.
Giriş işlemini yaptıktan sonra ekranınızda bir çok hata belirecektir. "A plugin was deactivated because the file B.php can’t be found" gibi. Aldırmayın, hiç bir veri kaybetmediniz. Bu işlemi yaparak sadece tüm eklentileri etkisizleştirmiş olduk. Şimdi tekrar wp-content/plugins1 dosyanıza geri dönün ve plugins1 dosyanızın sonundaki “1” rakamını kaldırın, yani dosyanızın ismini tekrar plugins yapın.
Böylece tüm eklentileri tekrar Admin Paneli > Eklentiler sayfasında görünecektir fakat, bu sefer hepsi etkisizleştirilmiş halde olacaktır. Tüm eklentileri tek tek aktifleştirip ve 500 hatası oluşup oluşmadığını her bir eklentiyi etkinleştirip sonra tekrar kontrol edin. Ta ki problem yaratan eklentiyi bulana kadar. Çünkü WordPress eklentileri 500 hatasına sebep olabiliyor.
6) Linux sunucularda bu hatayı alırsak ve (Chmod, htaccess, Eklentiler) seçeneklerinden hiçbiri birçözüm sağlamıyorsa. Sunucuyu yeniden başlata bilirsiniz. WHM/cPanel'den yönetici olarak giriş yapınız. Restart Services kısmından HTTP Server (Apache) Are you sure you wish to restart this service? YES diyerek sunucuyu yeniden başlatabilirsiniz.
7) DNS kayıtları, CHMOD izinleri ve Htaccess dosyası dışında halen bu hatayı alıyorsanız yüklediğiniz bir bileşen veya eklenti "500 Internal Server Error" hatası veriyor olabilir. Özellikle WordPress'de bilmediğiniz bir eklenti bu hataya sebep olabilir, eklentiyi kaldırıp sitenizi tekrar kontrol edebilirsiniz.
Hatanın kaynağı nasıl öğrenebilirsiniz?
Öncelikle cPanel içerisinde yer alan Kayıtlar (Logs) kısmındaki kayıtlara göz atabilirsiniz. Bunun için cPanel kontrol panelinize giriş yapınız, Kayıtlar (Logs, Günlükler) başlığı altınaki Hata Kaydı (Error Logs, Hata Günlükleri) simgesine tıklayın.
Eğer bir PHP dosyasının izinleri herkes tarafından yazılabilir ve CHMOD ayarı yanlış yapılandırılmış ve (writeable by the world) olarak belirlenmiş ise bu durum "500 Internal Server Error" görüntülenmesine neden olacaktır. Bu durumda hata kaydı kayıtlarında şuna benzer bir kayıt görüntülenecektir:
File "/home/username/public_html/concrete/index.php" is writeable by others
Bu durumun düzeltilmesi için index.php dosyasının izinlerinin basitçe 644 olarak değiştirilmesi yeterli olacaktır. Bu şekilde CHMOD ayarı yanlış olan dosya veya dizini hata kayıtlarından detaylı görebilirsiniz.