500 Internal Server Error: Niyə Baş Verir və Necə Həll Olunur?

Saytınızı açanda ekranda sadəcə "500 Internal Server Error" yazısını görürsünüzsə, əsəbləşməyə tələsməyin. Bu, serverin sizə "nəsə xarab oldu, amma dəqiq nə olduğunu deməyəcəm" dediyi ümumi bir mesajdır. Bu sayt xətasının həlli əksər hallarda göründüyü qədər çətin deyil, sadəcə bir neçə konkret yerə baxmaq kifayətdir. Aşağıda .htaccess-dən tutmuş PHP limitlərinə, fayl icazələrindən log oxumağa qədər real diaqnostika yolunu addım-addım göstərirəm.

500 Internal Server Error nə deməkdir?

404 xətası səhifənin tapılmadığını, 403 isə girişin qadağan olduğunu bildirir. 500 isə fərqlidir: server sorğunuzu qəbul edib, amma onu emal edərkən daxildə nəsə səhv gedib və server bunun konkret səbəbini brauzerə göndərmir. Bu, təhlükəsizlik baxımından normaldır, server öz daxili strukturunu kənara açmır. Amma bu, səbəbin tapıla bilməyəcəyi demək deyil, sadəcə brauzer ekranına deyil, serverin log faylına baxmaq lazımdır. Debug zamanı PHP-nin display_errors parametrini müvəqqəti aktiv etsəniz, brauzerdə real xəta mesajını görə bilərsiniz, amma bunu canlı saytda daim açıq saxlamaq olmaz, çünki texniki detalları hər kəsə göstərir.

Ən çox rast gəlinən səbəblər

Təcrübədə 500 xətasının arxasında adətən bu səbəblərdən biri dayanır:

  • Pozulmuş və ya səhv yazılmış .htaccess faylı - bir simvol yanlış olsa belə, server bütün saytı dayandıra bilər.
  • PHP-nin resurs limitindən çıxması - memory_limit və ya max_execution_time kifayət etmədikdə skript yarımçıq kəsilir.
  • Fayl və qovluq icazələrinin (permissions) səhv olması - xüsusən fayl köçürmədən və ya FTP ilə əl ilə yükləmədən sonra tez-tez rast gəlinir.
  • Plugin, modul və ya tema kodunda xəta - WordPress, Joomla kimi CMS-lərdə yenilənmədən sonra uyğunsuzluq yaranır.
  • PHP versiyası uyğunsuzluğu - köhnə kod yeni PHP versiyası ilə işləmir, ya da əksinə.
  • Serverin müvəqqəti yüklənməsi - trafik artımı zamanı resurs limitinə çatma.

Bəzən bunlardan bir neçəsi eyni anda üst-üstə düşür, məsələn, plugin yeniləməsi həm .htaccess-i dəyişir, həm də əlavə PHP resursu tələb edir. Ona görə tək səbəblə kifayətlənməyib, siyahını ardıcıl yoxlamaq daha etibarlıdır.

Addım-addım diaqnostika: xətanın kökünü necə tapmaq olar

Təxmin etmək yerinə, əvvəlcə real məlumata baxın. Bu ardıcıllıqla irəliləyin:

  • Error log-u oxuyun. cPanel-də "Metrics" bölməsində "Errors" aləti var, ya da public_html qovluğunda error_log faylı yaranır. Orada xətanın dəqiq sətri, faylı və növü yazılır.
  • .htaccess faylını müvəqqəti kənara qoyun. Faylın adını, məsələn, .htaccess_old kimi dəyişin və sayta yenidən baxın. Xəta yox olursa, problem elə bu faylda idi.
  • Son dəyişiklikləri xatırlayın. Son saatlarda plugin yeniləmisinizsə, fayl yükləmisinizsə, ya da tema dəyişmisinizsə, çox güman ki səbəb odur.
  • PHP versiyasını yoxlayın. cPanel-də MultiPHP Manager vasitəsilə hansı versiyanın aktiv olduğunu görüb, lazım gələrsə dəyişin.
  • Fayl icazələrini yoxlayın. File Manager-də qovluqların 755, faylların isə 644 olduğuna əmin olun.

Xətanı düzəltdikdən sonra təkcə ana səhifəni deyil, bir neçə fərqli səhifəni də yoxlayın. Bəzən problem bütün saytı deyil, konkret bir bölməni, məsələn admin panelini və ya bir formu vurur, bu da səbəbi daha da daraldır.

.htaccess və PHP limitləri: iki ən çox rast gəlinən texniki səbəb

.htaccess xətaları

.htaccess faylı Apache və LiteSpeed serverinə yönləndirmə, keş və təhlükəsizlik qaydalarını bildirir, amma sintaksisi çox həssasdır. Səhv yazılmış RewriteRule, dublikat qayda və ya dəstəklənməyən direktiv bütün saytı 500 xətasına sala bilər. WordPress kimi CMS-lərdə bu fayl avtomatik yaranır, ona görə də ən sadə həll faylı silib "Parametrlər > Bağlantı Strukturu" bölməsindən yenidən "Yadda saxla" düyməsinə basmaqdır, sistem faylı yenidən düzgün yaradacaq. İnternetdən tapdığınız hazır .htaccess bloklarını yoxlamadan birbaşa əlavə etmək riskli addımdır, hər sətrin nəyə görə lazım olduğunu anlayaraq əlavə edin.

PHP memory və execution limitləri

Hər hosting planında PHP-yə ayrılan yaddaş (memory_limit) və maksimum işləmə vaxtı (max_execution_time) var. Ağır plugin, böyük şəkil emalı və ya keyfiyyətsiz yazılmış kod bu limiti aşanda server skripti yarımçıq kəsir və 500 xətası çıxır. Bunu cPanel-də "MultiPHP INI Editor" bölməsindən özünüz artıra bilərsiniz, adətən memory_limit-i 256M-ə, max_execution_time-ı isə 300 saniyəyə qədər qaldırmaq kifayət edir. Əgər layihəniz daha ağırdırsa və paylaşımlı hostinqin limitləri artıq dar gəlirsə, VPS/VDS paketləri php.ini üzərində tam nəzarət verir.

Fayl icazələri və resurs məsələləri

Fayl köçürmədən, backup bərpasından və ya FTP ilə manual yükləmədən sonra icazələr qarışa bilir. Düzgün standart bunlardır: qovluqlar üçün 755, fayllar üçün 644. 777 kimi tam açıq icazə həm 500 xətasına, həm də təhlükəsizlik boşluğuna yol aça bilər, ona görə "hər ehtimala qarşı hər şeyi aç" yanaşmasından uzaq durun. File Manager-də faylın üstünə sağ klikləyib "Permissions" seçərək rəqəmi görüb düzəldə bilərsiniz. Bəzən səbəb icazə deyil, sahiblik (ownership) problemi olur, xüsusən backup-dan bərpadan sonra fayllar fərqli istifadəçiyə aid görünə bilər, bu halda hosting dəstəyi ilə əlaqə saxlamaq daha sürətli həll yoludur.

Bəzən problem kodda deyil, sadəcə resursdadır: sayt böyüyüb, trafik artıb və paylaşımlı serverin limiti müntəzəm dolur. Belə halda log-da eyni xəta təkrarlanır, amma konkret fayl göstərilmir. Bu vəziyyətdə sürətli hosting paketlərinə keçid, ya da daha böyük layihələr üçün dedicated server real həll olur, çünki problem artıq kodda deyil, ayrılan resursun kifayət etməməsindədir.

500 xətası ilk baxışda qorxulu görünsə də, əksər hallarda log faylını açıb yuxarıdakı addımları yoxlamaqla bir neçə dəqiqəyə tapılır. .htaccess-i yoxlayın, PHP limitlərinə baxın, icazələri düzəldin, son dəyişiklikləri xatırlayın, bunlardan biri demək olar ki, həmişə işi həll edir.

Özünüz axtarışdan yorulmusunuzsa, ya da problem təkrarlanırsa və hostinqinizin resursları artıq kifayət etmirsə, hostinq.az komandası köməyə hazırdır. Uyğun hosting paketi seçmək və ya server tənzimləməsi üçün WhatsApp-dan yazın: wa.me/994777112244.

Paylaş: