🛠️
Hosting

500 Internal Server Error: xatoning sababini qayerdan qidirish kerak

05.11.2026
← Barcha maqolalar

Saytingizni ochganingizda oq sahifada «500 Internal Server Error» yozuvini ko'rsangiz, bu server so'rovni qabul qilganini, lekin uni bajarish jarayonida kutilmagan xatoga duch kelganini bildiradi. Bu xato juda umumiy: u PHP kodidagi sintaksis xatosi, buzilgan .htaccess qatori, yetmay qolgan xotira yoki noto'g'ri fayl ruxsati natijasida ham chiqishi mumkin. Brauzer sizga faqat oqibatni ko'rsatadi, sababi esa serverdagi loglarda yozilgan bo'ladi. Shuning uchun 500 xatosida birinchi ish taxmin qilish emas, balki aniq yozuvni topishdir.

Birinchi qadam: xato qachon boshlanganini eslang

Ko'p hollarda 500 xatosi biror o'zgarishdan keyin darhol paydo bo'ladi. Yangi plagin o'rnatdingizmi, mavzuni yangiladingizmi, PHP versiyasini almashtirdingizmi yoki .htaccess faylini tahrirladingizmi? Agar xato aynan shunday harakatdan so'ng boshlangan bo'lsa, sababni o'sha o'zgarishning ichidan qidirish eng tez yo'l bo'ladi. Masalan, Toshkentdagi kichik kiyim do'koni sayti egasi WooCommerce uchun yangi to'lov plaginini yuklab, faollashtirgan zahoti butun sayt 500 bera boshlagan bo'lsa, plagin papkasining nomini vaqtincha o'zgartirish ko'pincha saytni darhol qaytaradi.

Agar hech narsa o'zgartirilmagan bo'lsa, server tomonidagi omillarni ham hisobga oling: disk kvotasi to'lishi, hosting tarifining resurs chegarasiga yetish yoki avtomatik yangilanish. Bunday holatlarda ham loglar sizga to'g'ri yo'nalishni ko'rsatadi.

Error log: sababning asosiy manbai

Hosting panelida har bir sayt uchun xato jurnali yuritiladi. ISPmanager panelida loglar odatda sayt sozlamalaridan yoki fayl menejeridagi logs papkasidan ochiladi. PHP o'z xatolarini sayt ildizidagi error_log fayliga ham yozishi mumkin. Jurnalning oxirgi qatorlariga qarang: u yerda fayl nomi, qator raqami va xato turi ko'rsatilgan bo'ladi. SSH kirish imkoniyati bo'lsa, oxirgi yozuvlarni quyidagicha ko'rish qulay:

tail -n 50 ~/logs/example.uz.error.log
tail -n 50 ~/www/example.uz/error_log

Fayl yo'llari hosting sozlamalariga qarab farq qilishi mumkin, shuning uchun aniq joylashuvni paneldan tekshiring. Logda «PHP Fatal error: Allowed memory size exhausted» ko'rsangiz, muammo xotira limitida; «Parse error: syntax error» bo'lsa, ko'rsatilgan fayl va qatordagi kodda xato bor; «Invalid command» yoki «RewriteRule: bad flag» kabi yozuvlar esa .htaccess bilan bog'liq.

.htaccess faylidagi buzilgan qatorlar

Apache serverida .htaccess faylidagi bitta noto'g'ri direktiva butun saytni 500 xatosiga olib keladi. Bu ko'pincha qo'lda tahrir qilinganda, plagin faylga o'z qoidalarini yozganda yoki disk to'lib qolganda fayl yarim yozilib qolganda sodir bo'ladi. Tekshirishning eng oddiy usuli: faylni vaqtincha boshqa nomga o'zgartiring va saytni qayta oching.

mv .htaccess .htaccess.bak

Agar sayt ochilsa, sabab aniq .htaccess ichida. WordPress uchun standart qoidalar juda qisqa, ularni qayta yaratib, qo'shimcha qoidalarni birma-bir qaytarib qo'shish orqali buzilgan qatorni topasiz:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Shuni ham yodda tuting: php_value yoki php_flag direktivalari PHP Apache moduli sifatida ishlamaganda (masalan, PHP-FPM yoki CGI rejimida) 500 xatosini beradi. Bunday sozlamalarni .htaccess o'rniga panel orqali yoki .user.ini faylida berish to'g'riroq.

PHP versiyasi va kod mosligi

Eski sayt kodi yangi PHP versiyasida ishlamasligi mumkin. Masalan, PHP 8 da olib tashlangan funksiyalar yoki o'zgargan xatti-harakatlar eski mavzu va plaginlarda fatal xatoga sabab bo'ladi. Aksincha, yangi plagin talab qiladigan PHP versiyasi serverdagidan yuqori bo'lsa ham xuddi shunday holat yuz beradi. ISPmanager panelida har bir sayt uchun PHP versiyasini alohida tanlash mumkin. Logda «Call to undefined function» yoki «Uncaught Error» kabi yozuvlar chiqqan bo'lsa, avval PHP versiyasini avvalgi holatiga qaytarib, sayt tiklanishini tekshiring, keyin esa kodni yangi versiyaga moslashtirishni rejalashtiring.

Xotira limiti va vaqt chegarasi

Og'ir sahifalar, katta importlar yoki ko'p plaginli saytlar PHP uchun ajratilgan xotiradan oshib ketishi mumkin. Bu holda log aniq ko'rsatadi: qancha bayt ruxsat etilgan va qancha so'ralgan. Limitni oshirish vaqtinchalik yechim bo'ladi, lekin asosiy sabab ko'pincha bitta ortiqcha og'ir plagin yoki cheksiz tsiklga tushgan kod bo'ladi. Limitni .user.ini orqali belgilash mumkin:

memory_limit = 256M
max_execution_time = 60

Agar limitni oshirgandan keyin ham xato takrorlansa, muammoni limitda emas, balki kodda qidirish kerak.

Fayl va papka ruxsatlari

Ba'zi server sozlamalarida, ayniqsa PHP sayt egasi nomidan ishlaganda, juda keng ruxsatlar xavfsizlik nuqtai nazaridan rad etiladi va 500 xatosiga olib keladi. Odatiy to'g'ri qiymatlar: papkalar uchun 755, fayllar uchun 644. Fayllarni boshqa foydalanuvchi nomidan yuklaganda egasi ham noto'g'ri bo'lib qolishi mumkin. SSH orqali ruxsatlarni ommaviy tiklash mumkin:

find ~/www/example.uz -type d -exec chmod 755 {} \;
find ~/www/example.uz -type f -exec chmod 644 {} \;

Hech qachon muammoni «hammasiga 777 berib» hal qilishga urinmang: bu saytni boshqa foydalanuvchilar va zararli skriptlar uchun ochib qo'yadi.

Xatoni brauzerda vaqtincha ko'rsatish

Log fayliga kirish imkoni bo'lmasa, xatoni vaqtincha ekranga chiqarish mumkin. WordPress uchun wp-config.php faylida debug rejimini yoqib, xatolarni alohida faylga yozdirish xavfsizroq usul hisoblanadi:

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);

Shunda xatolar wp-content/debug.log fayliga yoziladi va tashrif buyuruvchilar ularni ko'rmaydi. Muammo hal bo'lgach, debug rejimini albatta o'chiring, chunki xato matnlari fayl yo'llari va sayt tuzilishini oshkor qilishi mumkin.

Qachon texnik yordamga murojaat qilish kerak

Agar loglar bo'sh bo'lsa, xato barcha saytlaringizda bir vaqtda chiqayotgan bo'lsa yoki sabab server tomonida ekaniga shubha qilsangiz, o'zingiz uzoq izlanishingiz shart emas. sayt.uz mijozlari kabinetdagi texnik yordam bo'limi orqali tiket ochib, xato chiqqan sahifa manzili, taxminiy vaqti va oxirgi qilingan o'zgarishlarni yozib qoldirishlari mumkin. Bunday aniq ma'lumot muammoni ancha tez aniqlashga yordam beradi, chunki server loglarini vaqt bo'yicha solishtirish osonlashadi.

O'xshash maqolalar

🗜️ Gzip va Brotli siqish: sayt hajmini kamaytirib, sahifani tezlashtirish 🛡️ Shaxsiy ma'lumotlarni O'zbekistonda saqlash talabi va mahalliy hosting 🤖 AI crawlerlar serveringizni yuklayapti: aniqlash va cheklash 🪟 Windows vs Linux hosting: qaysi biri sizning sayt uchun mos?
🌐 Til
🇺🇿 O'zbek ✓ 🇺🇿 Ўзбек 🇷🇺 Русский 🇬🇧 English