PHP 8 Güncelleme Rehberi: Performans ve Uyumluluk
PHP 7.x artık güvenlik güncellemesi almıyor ve PHP 8 aynı sunucuda belirgin hız kazandırıyor. Uyumluluk kontrolünden panel ayarına, kırılan kod kalıplarından geri alma planına kadar güvenli bir geçişin tüm adımları.
Hosting panelinde PHP sürümünü değiştirmek iki tık sürer; sitenin o iki tıktan sonra da çalışması ise hazırlık ister. PHP 8 güncelleme işini erteleyen site sahiplerinin çoğu, bir gün eklentiyi güncelleyemediğinde ya da bir güvenlik taramasında “desteklenmeyen PHP” uyarısı aldığında zorunlu olarak geçer; plansız geçiş ise beyaz ekranla sonuçlanır.
Bu rehber, LIONFIN cPanel hosting ve Plesk hosting hesaplarında geçişi kontrollü yapmanız için hazırlandı: neden şimdi, uyumluluk nasıl kontrol edilir, hangi kod kalıpları kırılır, panelde sürüm nasıl değiştirilir ve hata çıkarsa nasıl geri dönülür.
Neden PHP 8: performans ve güvenlik
Geçişin iki somut gerekçesi vardır.
Güvenlik ve destek: PHP 7.x sürümlerinin tamamı destek dışıdır; yeni bulunan açıklar için yama yayınlanmaz. Eski 8.x sürümleri de sırayla destek dışı kaldığından hedef olarak güncel bir 8.x sürümünü seçin. Desteklenmeyen sürümde kalmak, güncel bir CMS’i eski bir işletim sisteminde çalıştırmaya benzer: uygulama güncel olsa da altındaki katman açıktır. Bu madde web sitesi güvenliği kontrol listesi içinde de yer alır.
Performans: PHP 8 ile gelen JIT derleyici ve motor iyileştirmeleri, aynı sunucuda aynı kodla ölçülebilir hız artışı sağlar; WordPress gibi uygulamalarda sayfa üretim süresi kısalır, aynı kaynakla daha fazla eşzamanlı ziyaretçi karşılanır. Kazancın büyüklüğü uygulamaya bağlıdır; ölçmek için geçiş öncesi ve sonrası aynı sayfanın sunucu yanıt süresini karşılaştırın.
Ek olarak modern eklenti ve temalar artık PHP 8’i zorunlu kılıyor; eski sürümde kalan siteler güncellemeleri alamaz hâle gelir.
Uyumluluk kontrolü: geçmeden önce
Sürümü değiştirmeden önce dört kontrol yapın:
- Uygulama sürümü: CMS çekirdeğinin, temanın ve tüm eklentilerin PHP 8 desteklediği sürümde olduğunu doğrulayın; WordPress’te eklenti sayfasındaki “PHP sürümü gereksinimi” bilgisi, özel yazılımlarda geliştiricinin notu.
- Kullanılmayanları kaldırın: Devre dışı eklentiler de yüklenmez ama hesapta durur; PHP 8’de uyumsuz olanlar ileride etkinleştirildiğinde sorun çıkarır. Silin.
- Otomatik tarama: Kod tabanını PHP 8 uyumsuzlukları için tarayan araçlar (PHPCompatibility kural seti ile PHP_CodeSniffer, WordPress için PHP Compatibility Checker eklentisi) kullanılan kaldırılmış işlevleri listeler.
- Hata günlüğü: Mevcut sürümde
Deprecateduyarılarını görünür yapın; bugün “kullanımdan kalkacak” uyarısı veren kod, PHP 8’de hataya dönüşür.
En güvenli yöntem, sitenin bir kopyasını test alt alan adında açıp PHP sürümünü önce orada değiştirmektir; cPanel’de subdomain oluşturma ve Softaculous klonlama, Plesk’te WordPress Toolkit klon özelliği bu işi görür.
PHP 8’de kırılan kod kalıpları
Özel yazılım ya da eski tema kullanıyorsanız aşağıdaki kalıplar en sık karşılaşılan kırılma noktalarıdır:
| Kalıp | PHP 8 davranışı | Çözüm |
|---|---|---|
each(), create_function(), money_format() | Kaldırıldı, ölümcül hata | foreach, anonim işlev, NumberFormatter |
$str{0} biçiminde küme parantezli dizi erişimi | Kaldırıldı | $str[0] |
| Dahili işlevlere yanlış türde parametre | Uyarı yerine TypeError | Parametreyi doğru türe çevirin |
| Dizi olmayan değere dizi erişimi, tanımsız dizin | Daha sıkı uyarılar | isset / ?? ile kontrol |
Sayı ile metin karşılaştırma (0 == "abc") | Sonuç değişti (artık false) | Katı karşılaştırma === |
Dahili işlevlere null geçirme | 8.1’den itibaren kullanımdan kalkma uyarısı | Boş değer kontrolü |
| Sınıfta tanımlanmamış dinamik özellikler | 8.2’den itibaren uyarı | Özelliği sınıfta tanımlayın |
Eski mysql_* işlevleri | Zaten yok (7.0’dan beri) | mysqli ya da PDO |
Tarama aracının çıktısı bu tabloyla eşleşiyorsa düzeltmeler çoğunlukla mekaniktir; hiçbir çıktı yoksa ve uygulama güncelse geçiş büyük olasılıkla sorunsuz tamamlanır.
PHP 8 güncellemesi adım adım: cPanel ve Plesk
Hazırlık tamamlandıysa sürüm değişikliği panelden yapılır:
- Tam yedek alın: Dosya ve veritabanı; yöntem cPanel yedek alma rehberinde.
- Düşük trafikli saati seçin ve bakım bildirimi gerekiyorsa yapın.
- Sürümü değiştirin:
- cPanel: Software → MultiPHP Manager, alan adını işaretleyin, listeden PHP 8.x seçip Apply; ayrıntı cPanel PHP sürümü değiştirme rehberinde.
- Plesk: Websites & Domains → PHP Settings, sürüm listesinden 8.x seçip OK; adımlar Plesk PHP sürümü değiştirme yazısında.
- PHP ayarlarını gözden geçirin:
memory_limit,upload_max_filesize,max_execution_timeve gerekli uzantıların (mbstring,intl,gd,zip) yeni sürümde de açık olduğunu doğrulayın; cPanel’de MultiPHP INI Editor, Plesk’te aynı PHP Settings sayfası. - Test edin: Anasayfa, iç sayfalar, formlar, yönetici paneli, ödeme akışı; hata günlüğünü açık tutun.
- Önbellekleri temizleyin: CMS önbelleği, sunucu önbelleği ve varsa CDN.
Değişiklik anında uygulanır; siteler genellikle saniyeler içinde yeni sürümle çalışmaya başlar.
Hata çıkarsa: teşhis ve geri alma
Beyaz ekran ya da 500 hatası görürseniz paniğe gerek yok; iki seçeneğiniz var.
Hızlı geri alma: Aynı panel ekranından önceki sürümü seçin; site anında eski hâline döner. Bu, sorunu çözmez ama zaman kazandırır.
Teşhis: Hatanın nedenini görmek için hata görüntülemeyi geçici olarak açın. cPanel’de belge köküne bir .user.ini dosyası ekleyin, Plesk’te PHP Settings altındaki ek yönergeler alanına yazın:
display_errors = On
error_reporting = E_ALL
log_errors = On
error_log = /home/kullanici/php-hatalari.logHata mesajı genellikle dosya adı ve satır numarasıyla birlikte hangi eklentinin ya da tema dosyasının sorun çıkardığını söyler. Çözüm sırası:
- İlgili eklentiyi güncelleyin; güncelleme yoksa geçici olarak devre dışı bırakın (WordPress’te eklenti klasörünü FTP ile yeniden adlandırmak yeterlidir).
- Temaya ait bir hataysa temanın güncel sürümünü yükleyin ya da kırılan kalıbı tablodaki çözümle düzeltin.
- Özel kodda hata varsa geliştiriciye hata günlüğünü iletin.
Teşhis bittiğinde display_errors ayarını mutlaka kapatın; hata çıktısı dosya yollarını ziyaretçilere gösterir.
Geçiş sonrası: OPcache ve ölçüm
PHP 8 güncellemesi tamamlandıktan sonra kazancı görünür kılmak için üç iş kaldı:
- OPcache: Derlenmiş betikleri bellekte tutan bu uzantı hosting sunucularında genellikle açıktır; PHP Settings ya da MultiPHP INI Editor’de
opcache.enabledeğerinin açık olduğunu doğrulayın. - Ölçüm: Geçiş öncesi kaydettiğiniz sunucu yanıt süresini aynı sayfalar için yeniden ölçün; farkı görmek ekibin sonraki güncellemeleri ertelememesi için iyi bir gerekçedir. Diğer hız adımları web sitesi hızlandırma rehberi yazısında.
- Uyarıları izleyin: Hata günlüğünde
Deprecatedsatırları bir sonraki sürüm geçişinin ön habercisidir; ayda bir bakın ve eklentileri güncel tutun.
Bir sonraki büyük sürüm geldiğinde aynı süreci (test kopyası, uyumluluk taraması, panelden değişiklik, ölçüm) tekrarlamak yeterlidir; ilk geçiş en zorudur, sonrakiler rutine dönüşür.
Sık Sorulan Sorular
PHP sürümünü değiştirmek sitemi bozar mı?
Uygulama, tema ve eklentiler güncelse çoğu site sorunsuz geçer. Risk, yıllardır güncellenmemiş eklentilerde ve eski özel kodda toplanır. Test kopyasında deneme, tam yedek ve panelden tek tıkla geri alma imkânı sayesinde olası bir hata dakikalar içinde geri alınabilir; asıl risk, geçişi yapmayıp desteksiz sürümde kalmaktır.
Hangi PHP 8 sürümünü seçmeliyim?
Uygulamanızın desteklediği en güncel 8.x sürümünü seçin; daha yeni sürümler daha uzun süre güvenlik güncellemesi alır. CMS ya da eklenti yalnızca belirli bir sürümü destekliyorsa o sürümle başlayıp eklentiler güncellendikçe ilerleyin. Panelde listelenen sürümler LIONFIN sunucularında kurulu ve desteklenen sürümlerdir.
WordPress için PHP 8 güncellemesi gerekli mi?
Evet. Güncel WordPress sürümleri PHP 8 ile tam uyumludur ve birçok popüler eklenti artık PHP 7.4 desteğini bırakmıştır. Site Sağlığı ekranı eski PHP sürümü için uyarı verir. Geçmeden önce eklenti listesini gözden geçirmek ve test kopyasında denemek, WordPress sitelerinde de en güvenli yoldur.
Aynı hesapta farklı siteler farklı PHP sürümü kullanabilir mi?
Evet. cPanel MultiPHP Manager ve Plesk PHP Settings, sürümü alan adı bazında belirlemenize izin verir. Böylece güncellenmiş siteleri PHP 8’e taşırken eski bir siteyi geçici olarak önceki sürümde tutabilirsiniz; ancak bu durumu kalıcı çözüm değil, geçiş süresi olarak görün.