Ko'plab saytlar yillar davomida bir marta o'rnatilgan PHP versiyasida ishlashda davom etadi. Sayt ochiladi, buyurtmalar kelib turadi, shuning uchun egasi hech narsani o'zgartirishga ehtiyoj sezmaydi. Lekin PHP versiyasining ham yashash muddati bor va u tugagach, ya'ni EOL (end of life) holatiga kelgach, versiya xavfsizlik yamoqlarini olmay qo'yadi. Bu maqolada eski versiyaning aniq xavflari nimada ekanini va saytni xavfsiz yangilash rejasini qanday tuzishni ko'rib chiqamiz.
PHP versiyalarining hayot tsikli qanday ishlaydi
PHP jamoasi har yili, odatda noyabr oyida, yangi asosiy versiya chiqaradi. Har bir versiya avval faol qo'llab-quvvatlash davrida bo'ladi: bu vaqtda oddiy xatolar ham, xavfsizlik zaifliklari ham tuzatiladi. Keyin faqat xavfsizlik tuzatishlari chiqadigan davr boshlanadi. 2024-yilda qabul qilingan qarorga ko'ra, bu ikki davr birgalikda taxminan to'rt yil davom etadi va tugash sanasi yil oxiriga, 31-dekabrga to'g'rilanadi.
Quyidagi jadval 2026-yil noyabr holatiga ko'ra asosiy versiyalarning holatini ko'rsatadi. Sanalar o'zgarishi mumkinligi sababli, qaror qabul qilishdan oldin PHP rasmiy saytidagi qo'llab-quvvatlanadigan versiyalar sahifasini tekshirib ko'ring.
| Versiya | Holat | Xavfsizlik tuzatishlari |
|---|---|---|
| 7.4 | Qo'llab-quvvatlanmaydi | 2022-yil noyabrda tugagan |
| 8.0 | Qo'llab-quvvatlanmaydi | 2023-yil noyabrda tugagan |
| 8.1 | Qo'llab-quvvatlanmaydi | 2025-yil 31-dekabrda tugagan |
| 8.2 | Faqat xavfsizlik | 2026-yil 31-dekabrgacha |
| 8.3 | Faqat xavfsizlik | 2027-yil 31-dekabrgacha |
| 8.4 | Faol | 2028-yil 31-dekabrgacha |
| 8.5 | Faol | 2029-yil 31-dekabrgacha |
Jadvaldan ko'rinib turibdiki, 8.2 versiyasida ishlayotgan saytlar uchun ham yangilash vaqti yaqinlashib qoldi, 7.4 va 8.0 da ishlayotgan saytlar esa bir necha yildan beri yamoqsiz ishlamoqda.
Eski versiyaning real xavflari
Birinchi va eng asosiy xavf bu tuzatilmaydigan zaifliklar. Qo'llab-quvvatlash tugagach PHP'da yangi zaiflik topilsa, u eski versiya uchun rasman tuzatilmaydi. Bunday zaifliklar odatda ommaga e'lon qilinadi va avtomatlashtirilgan skanerlar internetdagi saytlarni aynan shu zaifliklar bo'yicha tekshiradi. Natijada sayt egasi hech narsa qilmasa ham, uning sayti hujum nishoniga aylanadi.
Ikkinchi xavf CMS va plaginlar bilan bog'liq. WordPress, Joomla va boshqa tizimlarning yangi versiyalari vaqt o'tishi bilan eski PHP'ni qo'llab-quvvatlashni to'xtatadi. Natijada sayt egasi CMS'ni yangilay olmaydi, chunki yangi versiya eski PHP'da ishlamaydi. Plaginlardagi zaifliklar esa faqat yangi versiyalarda tuzatiladi. Shunday qilib, eski PHP butun saytni eski va zaif kod ichida qamab qo'yadi.
Uchinchidan, eski versiyalar sekinroq ishlaydi. PHP 8 seriyasida ichki optimallashtirishlar va JIT kompilyatori qo'shilgan, ko'p saytlar oddiy versiya almashtirish bilan sezilarli tezlashadi. Sayt tezligi esa foydalanuvchi tajribasi va qidiruv tizimlaridagi o'rni uchun muhim.
Hosting tomonidagi cheklovlar
Vaqt o'tishi bilan eski versiyalar uchun kengaytmalarni yangilash ham qiyinlashadi. Masalan, yangi ma'lumotlar bazasi serveri yoki yangi shifrlash kutubxonasi eski PHP bilan to'liq mos ishlamasligi mumkin. Shu sababli hosting provayderlari eski versiyalarni ma'lum vaqtgacha saqlab tursa ham, ularni abadiy qoldirish imkoni yo'q.
Misol: Namangandagi maktab sayti
Namangandagi xususiy maktabning sayti misol.uz 2018-yilda Joomla 3 asosida qurilgan va PHP 7.4 da ishlaydi. Saytda yangiliklar, dars jadvali va ota-onalar uchun aloqa formasi bor. Joomla 3 ning o'zi ham rasmiy qo'llab-quvvatlanmaydi, shuning uchun bu yerda muammo ikki qavatli: eski CMS va eski PHP. Bunday holatda shunchaki PHP versiyasini 8.3 ga o'tkazish saytni sindiradi, chunki Joomla 3 bu versiyani qo'llab-quvvatlamaydi.
To'g'ri yo'l bosqichma-bosqich harakat qilish: avval saytning to'liq nusxasini sinov subdomeniga ko'chirish, u yerda Joomla'ni yangi asosiy versiyaga ko'chirish, kengaytma va shablonlarni almashtirish, keyin esa PHP versiyasini ko'tarish. Hammasi sinovda ishlagach, asosiy saytga o'tkaziladi. Bu ish bir kunda bajarilmasligi mumkin, shuning uchun uni oldindan rejalashtirish muhim.
Yangilash rejasi: bosqichlar
Har qanday saytni eski PHP'dan yangisiga o'tkazishda quyidagi tartib xatolarni kamaytiradi:
- Hozirgi holatni aniqlang: sayt qaysi PHP versiyasida ishlayotgani, CMS va plaginlar versiyasi, maxsus yozilgan kod bormi.
- Maqsadli versiyani tanlang. Hozirgi sharoitda kamida 8.3, imkon bo'lsa 8.4 tanlash yaxshi, shunda keyingi bir necha yilga yetadi.
- To'liq zaxira nusxa oling: fayllar va ma'lumotlar bazasi.
- Sinov nusxasini yarating va unda maqsadli versiyani yoqing.
- CMS, mavzu va plaginlarni yangilang, mos kelmaydiganlarini almashtiring.
- Xatolar jurnalini tekshiring va topilgan muammolarni tuzating.
- Asosiy saytni tashrif kam bo'lgan vaqtda yangilang va bir necha kun kuzatib boring.
Maxsus yozilgan kodda eng ko'p uchraydigan muammolarni oldindan qidirish mumkin. Quyidagi buyruq PHP 7 va 8 da olib tashlangan funksiyalarni sayt papkasida izlaydi:
# PHP 7.0 da olib tashlangan mysql_* va PHP 8.0 da olib tashlangan funksiyalar
grep -rnE "mysql_(connect|query|fetch)|create_function\(|[^a-zA-Z_]each\(" \
--include=*.php ~/www/misol.uz | grep -v "/vendor/"
# Yangi versiya bilan sintaksis tekshiruvi (yo'l serverga qarab farq qiladi)
find ~/www/misol.uz -name "*.php" -not -path "*/vendor/*" \
-exec /opt/php83/bin/php -l {} \; | grep -v "No syntax errors"
Birinchi buyruq natijasi bo'sh bo'lsa, bu yaxshi belgi, lekin to'liq kafolat emas. Ikkinchi buyruq faqat sintaksis xatolarini topadi, ish vaqtidagi xatolarni esa faqat sinov nusxasida saytni haqiqatan ishlatib ko'rish orqali aniqlash mumkin.
Kim uchun qancha vaqt kerak bo'ladi
Zamonaviy WordPress saytida, agar mavzu va plaginlar muntazam yangilanib kelgan bo'lsa, versiyani ko'tarish ko'pincha bir necha daqiqalik ish va keyingi tekshiruvdan iborat. Bir necha yil yangilanmagan CMS'da esa avval CMS'ni yangilash kerak bo'ladi va bu bir-ikki kun olishi mumkin. Maxsus yozilgan eski kodda esa dasturchi kodni ko'rib chiqishi kerak, ish hajmi kod hajmiga bog'liq.
sayt.uz hostingida PHP versiyasi har bir sayt uchun alohida tanlanadi, shuning uchun sinov subdomenini yangi versiyada ishlatib, asosiy saytni eski versiyada qoldirgan holda bemalol tayyorgarlik ko'rish mumkin. Muhimi, eski versiyani vaqtinchalik holat deb qabul qilish va yangilash uchun aniq muddat belgilash.