🛠️
Хостинг

500 Internal Server Error: хатонинг сабабини қаердан қидириш керак

05.11.2026
← Барча мақолалар

Сайтингизни очганингизда оқ саҳифада «500 Internal Server Error» ёзувини кўрсангиз, бу сервер сўровни қабул қилганини, лекин уни бажариш жараёнида кутилмаган хатога дуч келганини билдиради. Бу хато жуда умумий: у PHP кодидаги синтаксис хатоси, бузилган .htaccess қатори, етмай қолган хотира ёки нотўғри файл рухсати натижасида ҳам чиқиши мумкин. Браузер сизга фақат оқибатни кўрсатади, сабаби эса сервердаги логларда ёзилган бўлади. Шунинг учун 500 хатосида биринчи иш тахмин қилиш эмас, балки аниқ ёзувни топишдир.

Биринчи қадам: хато қачон бошланганини эсланг

Кўп ҳолларда 500 хатоси бирор ўзгаришдан кейин дарҳол пайдо бўлади. Янги плагин ўрнатдингизми, мавзуни янгиладингизми, PHP версиясини алмаштирдингизми ёки .htaccess файлини таҳрирладингизми? Агар хато айнан шундай ҳаракатдан сўнг бошланган бўлса, сабабни ўша ўзгаришнинг ичидан қидириш энг тез йўл бўлади. Масалан, Тошкентдаги кичик кийим дўкони сайти эгаси WooCommerce учун янги тўлов плагинини юклаб, фаоллаштирган заҳоти бутун сайт 500 бера бошлаган бўлса, плагин папкасининг номини вақтинча ўзгартириш кўпинча сайтни дарҳол қайтаради.

Агар ҳеч нарса ўзгартирилмаган бўлса, сервер томонидаги омилларни ҳам ҳисобга олинг: диск квотаси тўлиши, хостинг тарифининг ресурс чегарасига етиш ёки автоматик янгиланиш. Бундай ҳолатларда ҳам логлар сизга тўғри йўналишни кўрсатади.

Error log: сабабнинг асосий манбаи

Хостинг панелида ҳар бир сайт учун хато журнали юритилади. ISPmanager панелида логлар одатда сайт созламаларидан ёки файл менежеридаги logs папкасидан очилади. PHP ўз хатоларини сайт илдизидаги error_log файлига ҳам ёзиши мумкин. Журналнинг охирги қаторларига қаранг: у ерда файл номи, қатор рақами ва хато тури кўрсатилган бўлади. SSH кириш имконияти бўлса, охирги ёзувларни қуйидагича кўриш қулай:

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

Файл йўллари хостинг созламаларига қараб фарқ қилиши мумкин, шунинг учун аниқ жойлашувни панелдан текширинг. Логда «PHP Fatal error: Allowed memory size exhausted» кўрсангиз, муаммо хотира лимитида; «Parse error: syntax error» бўлса, кўрсатилган файл ва қатордаги кодда хато бор; «Invalid command» ёки «RewriteRule: bad flag» каби ёзувлар эса .htaccess билан боғлиқ.

.htaccess файлидаги бузилган қаторлар

Apache серверида .htaccess файлидаги битта нотўғри директива бутун сайтни 500 хатосига олиб келади. Бу кўпинча қўлда таҳрир қилинганда, плагин файлга ўз қоидаларини ёзганда ёки диск тўлиб қолганда файл ярим ёзилиб қолганда содир бўлади. Текширишнинг энг оддий усули: файлни вақтинча бошқа номга ўзгартиринг ва сайтни қайта очинг.

mv .htaccess .htaccess.bak

Агар сайт очилса, сабаб аниқ .htaccess ичида. WordPress учун стандарт қоидалар жуда қисқа, уларни қайта яратиб, қўшимча қоидаларни бирма-бир қайтариб қўшиш орқали бузилган қаторни топасиз:

# 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

Шуни ҳам ёдда тутинг: php_value ёки php_flag директивалари PHP Apache модули сифатида ишламаганда (масалан, PHP-FPM ёки CGI режимида) 500 хатосини беради. Бундай созламаларни .htaccess ўрнига панел орқали ёки .user.ini файлида бериш тўғрироқ.

PHP версияси ва код мослиги

Эски сайт коди янги PHP версиясида ишламаслиги мумкин. Масалан, PHP 8 да олиб ташланган функциялар ёки ўзгарган хатти-ҳаракатлар эски мавзу ва плагинларда фатал хатога сабаб бўлади. Аксинча, янги плагин талаб қиладиган PHP версияси сервердагидан юқори бўлса ҳам худди шундай ҳолат юз беради. ISPmanager панелида ҳар бир сайт учун PHP версиясини алоҳида танлаш мумкин. Логда «Call to undefined function» ёки «Uncaught Error» каби ёзувлар чиққан бўлса, аввал PHP версиясини аввалги ҳолатига қайтариб, сайт тикланишини текширинг, кейин эса кодни янги версияга мослаштиришни режалаштиринг.

Хотира лимити ва вақт чегараси

Оғир саҳифалар, катта импортлар ёки кўп плагинли сайтлар PHP учун ажратилган хотирадан ошиб кетиши мумкин. Бу ҳолда лог аниқ кўрсатади: қанча байт рухсат этилган ва қанча сўралган. Лимитни ошириш вақтинчалик ечим бўлади, лекин асосий сабаб кўпинча битта ортиқча оғир плагин ёки чексиз циклга тушган код бўлади. Лимитни .user.ini орқали белгилаш мумкин:

memory_limit = 256M
max_execution_time = 60

Агар лимитни оширгандан кейин ҳам хато такрорланса, муаммони лимитда эмас, балки кодда қидириш керак.

Файл ва папка рухсатлари

Баъзи сервер созламаларида, айниқса PHP сайт эгаси номидан ишлаганда, жуда кенг рухсатлар хавфсизлик нуқтаи назаридан рад этилади ва 500 хатосига олиб келади. Одатий тўғри қийматлар: папкалар учун 755, файллар учун 644. Файлларни бошқа фойдаланувчи номидан юклаганда эгаси ҳам нотўғри бўлиб қолиши мумкин. SSH орқали рухсатларни оммавий тиклаш мумкин:

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

Ҳеч қачон муаммони «ҳаммасига 777 бериб» ҳал қилишга уринманг: бу сайтни бошқа фойдаланувчилар ва зарарли скриптлар учун очиб қўяди.

Хатони браузерда вақтинча кўрсатиш

Лог файлига кириш имкони бўлмаса, хатони вақтинча экранга чиқариш мумкин. WordPress учун wp-config.php файлида debug режимини ёқиб, хатоларни алоҳида файлга ёздириш хавфсизроқ усул ҳисобланади:

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

Шунда хатолар wp-content/debug.log файлига ёзилади ва ташриф буюрувчилар уларни кўрмайди. Муаммо ҳал бўлгач, debug режимини албатта ўчиринг, чунки хато матнлари файл йўллари ва сайт тузилишини ошкор қилиши мумкин.

Қачон техник ёрдамга мурожаат қилиш керак

Агар логлар бўш бўлса, хато барча сайтларингизда бир вақтда чиқаётган бўлса ёки сабаб сервер томонида эканига шубҳа қилсангиз, ўзингиз узоқ изланишингиз шарт эмас. sayt.uz мижозлари кабинетдаги техник ёрдам бўлими орқали тикет очиб, хато чиққан саҳифа манзили, тахминий вақти ва охирги қилинган ўзгаришларни ёзиб қолдиришлари мумкин. Бундай аниқ маълумот муаммони анча тез аниқлашга ёрдам беради, чунки сервер логларини вақт бўйича солиштириш осонлашади.

Ўхшаш мақолалар

🗜️ Gzip ва Brotli сиқиш: сайт ҳажмини камайтириб, саҳифани тезлаштириш 🛡️ Шахсий маълумотларни Ўзбекистонда сақлаш талаби ва маҳаллий хостинг 🤖 AI crawlerлар серверингизни юклаяпти: аниқлаш ва чеклаш 🪟 Windows vs Linux хостинг
🌐 Тил
🇺🇿 O'zbek 🇺🇿 Ўзбек ✓ 🇷🇺 Русский 🇬🇧 English