Янги CMS ўрнатаётганда, Composer билан лойиҳа пакетларини юклаётганда ёки WordPress'нинг "Сайт саломатлиги" саҳифасини очганда, кўпинча "талаб қилинадиган PHP кенгайтмаси топилмади" мазмунидаги огоҳлантиришга дуч келасиз. PHP'нинг ўзи фақат асосий имкониятларни беради, расм билан ишлаш, архивларни очиш ёки турли тиллардаги сана ва рақамларни тўғри форматлаш каби вазифалар эса алоҳида кенгайтмалар орқали бажарилади. Энг кўп сўраладиганлари тўртта: intl, gd, imagick ва zip. Қуйида уларнинг ҳар бири нима учун кераклиги, ёқилганини қандай текшириш ва уларни қандай ёқиш ҳақида гаплашамиз.
Тўрт кенгайтма ва уларнинг вазифаси
intl: тиллар, саналар ва рақамлар
intl кенгайтмаси ICU кутубхонасига асосланган ва матн, сана, рақам ҳамда валютани турли тиллар қоидаларига мувофиқ қайта ишлайди. Масалан, ой номларини ўзбек, рус ёки инглиз тилида чиқариш, сўмни тўғри ажратгичлар билан кўрсатиш ёки матнларни тил қоидасига кўра саралаш учун айнан шу кенгайтма ишлатилади. Кўплаб замонавий фреймворк ва CMS'лар (масалан, Laravel'нинг баъзи ёрдамчи функциялари, Symfony компонентлари, Magento) intl ни талаб қилади ёки уни қаттиқ тавсия этади. Ўзбекча учун ICU'да лотин ва кирилл ёзувлари алоҳида локаллар сифатида мавжуд:
$date = new IntlDateFormatter('uz_Latn_UZ', IntlDateFormatter::LONG, IntlDateFormatter::NONE);
echo $date->format(new DateTime('2026-03-21'));
$money = new NumberFormatter('uz_Latn_UZ', NumberFormatter::CURRENCY);
echo $money->formatCurrency(150000, 'UZS');
Натижанинг аниқ кўриниши сервердаги ICU версиясига боғлиқ, шунинг учун уни ўз серверингизда текшириб кўринг.
gd: расмлар билан оддий ишлаш
gd расмларни ўқиш, ўлчамини ўзгартириш, кесиш, устига ёзув ёки сув белгиси қўйиш ва бошқа форматга сақлаш имконини беради. CMS'лар юкланган расмдан кичик нусхалар (thumbnail) яратишда, CAPTCHA ва графиклар чизишда шу кенгайтмадан фойдаланади. GD бир нечта форматни қўллаб-қувватлайди, лекин WebP ёки AVIF каби форматлар қўллаб-қувватланиши кенгайтма қандай йиғилганига боғлиқ. Буни gd_info() функцияси билан билиш мумкин.
imagick: кучлироқ расм қайта ишлаш
imagick ImageMagick дастури билан ишлайдиган кенгайтма. У GD'дан кўра кўпроқ форматни тушунади, рангни яхшироқ сақлайди ва катта расмларни сифатлироқ кичрайтиради. PDF'нинг биринчи саҳифасидан расм ясаш ҳам одатда imagick орқали қилинади, лекин бунинг учун серверда Ghostscript бўлиши ва ImageMagick'нинг хавфсизлик сиёсати PDF билан ишлашга рухсат бериши керак. WordPress imagick мавжуд бўлса, расмлар учун уни GD'дан устун қўяди.
zip: архивлар билан ишлаш
zip кенгайтмаси PHP'га ZipArchive классини қўшади. У орқали сайт архив яратади, юкланган архивни очади ва экспорт натижаларини битта файлга тўплайди. Composer пакетларни юклаганда zip кенгайтмаси ёки сервердаги unzip дастури бўлмаса, секинроқ усулга ўтиши ёки огоҳлантириш бериши мумкин. Кўплаб захира нусха плагинлари, Excel файлларини яратадиган кутубхоналар (XLSX формати аслида zip архив) ҳам шу кенгайтмага таянади.
Кенгайтма ёқилганини қандай текшириш
Энг ишончли усул веб-сервер орқали ишлайдиган PHP'ни текширишдир, чунки буйруқ қаторидаги PHP бошқа версия ёки бошқа созлама билан ишлаши мумкин. Сайт папкасига вақтинчалик файл қўйиб, уни браузерда очинг ва текширгандан кейин ўчириб ташланг:
<?php
foreach (['intl', 'gd', 'imagick', 'zip'] as $ext) {
echo $ext . ': ' . (extension_loaded($ext) ? 'bor' : "yo'q") . "<br>";
}
SSH орқали уланиш бўлса, буйруқ қаторидан ҳам кўриш мумкин. Фақат бу натижа веб-сайтдаги PHP билан бир хил эканига ишонч ҳосил қилинг, айниқса серверда бир нечта PHP версияси ўрнатилган бўлса:
php -v
php -m | grep -E 'intl|gd|imagick|zip'
Умумий хостингда қандай ёқилади
Умумий хостингда кенгайтмалар сервер даражасида ўрнатилади ва мижоз уларни фақат панел рухсат берган доирада бошқаради. ISPmanager панелида сайт учун PHP версиясини танлаш мумкин ва сервер созламасига қараб танланган версия учун кенгайтмалар рўйхати ҳам кўрсатилиши мумкин. Баъзан муаммо кенгайтманинг йўқлигида эмас, балки сайтга эски PHP версияси танланганида бўлади: янги версияга ўтиш билан керакли кенгайтмалар ҳам пайдо бўлади. Версияни алмаштиришдан олдин CMS ва плагинларингиз янги PHP билан мос эканини текширинг.
sayt.uz мижозлари панелга sayt.uz кабинетидаги хостинг саҳифасидан киради. Агар керакли кенгайтмани ўзингиз ёқа олмасангиз, кабинетдан техник ёрдамга тикет ёзинг ва қайси сайт, қайси PHP версияси ва қайси кенгайтма кераклигини аниқ кўрсатинг.
Ўз VPS серверингизда ўрнатиш
VPS'да кенгайтмаларни ўзингиз ўрнатасиз. Ubuntu 24.04 да стандарт PHP 8.3, кенгайтмалар эса алоҳида пакетлар сифатида келади. Ўрнатишдан кейин PHP-FPM хизматини қайта ишга тушириш керак, акс ҳолда веб-сайт янги кенгайтмани кўрмайди:
sudo apt update
sudo apt install php8.3-intl php8.3-gd php8.3-zip php-imagick
sudo systemctl restart php8.3-fpm
php -m | grep -E 'intl|gd|imagick|zip'
Агар PHP Apache модули сифатида ишласа, php8.3-fpm ўрнига apache2 хизмати қайта ишга туширилади. Бошқа PHP версияси ишлатилса, пакет номларидаги рақамни мосланг. Кенгайтма ўрнатилган, лекин ёқилмаган бўлса, Debian ва Ubuntu'да phpenmod буйруғи ёрдам беради, масалан sudo phpenmod intl.
Мисол: Андижондаги ўқув маркази портали
Андижондаги ўқув маркази example.uz учун Laravel'да талабалар портали ёзилди. Дастурчининг компьютерида ҳаммаси ишлади, серверда эса composer install буйруғи Root composer.json requires PHP extension ext-intl деган хато билан тўхтади. Бундан ташқари, курс якунида бериладиган сертификатларнинг кичик расмларини яратиш функцияси imagick'ни талаб қиларди. Текширув шуни кўрсатдики, сайтга эски PHP версияси танланган ва унда intl ёқилмаган эди. PHP версияси панелда янгиланди, етишмаётган кенгайтмалар техник ёрдам орқали ёқилди, шундан кейин composer install муваффақиятли тугади ва сертификат расмлари тўғри яратила бошлади.
Бир нечта амалий маслаҳат
- Лойиҳанинг
composer.jsonфайлида керакли кенгайтмаларни"ext-intl": "*"кўринишида кўрсатинг, шунда етишмаётган кенгайтма ўрнатиш босқичидаёқ аниқланади. - Расм қайта ишлаш учун GD ҳам, imagick ҳам бўлса, илова қайси бирини ишлатаётганини билиб қўйинг, чунки натижа сифати фарқ қилиши мумкин.
- Кенгайтма ёқилгандан кейин вақтинчалик текширув файлини ўчиришни унутманг.