PrestaShop 1.7’den 9’a: Symfony 6.4 ve yeniden yazılacak geçersiz kılmalar
PrestaShop’ta 1.7’den doğrudan 9’a geçmek; Symfony 6.4’e, en az PHP 8.1’e ve tamamen Twig tabanlı bir yönetim paneline tek seferde geçmek demektir: göründüğünden daha ağır bir sıçrama.
1.7 ile 9 arasında ne değişiyor
PrestaShop 1.7 ile 9 arasındaki fark artık yalnızca bir sürüm numarası meselesi değil, bir nesil değişikliğidir. PrestaShop 1.7 karma bir mimariye dayanır: yönetim panelinin bir kısmı ve bazı ön yüz denetleyicileri Symfony üzerinde, geri kalanı hâlâ saf Smarty ve legacy yönetim denetleyicileriyle çalışır. PrestaShop 9 bu son legacy denetleyicileri kaldırır: yönetim paneli artık tamamen Symfony denetleyicileri ve Twig şablonlama üzerine kuruludur; Symfony’nin kendisi de 6.4 LTS’e atlar, 1.7/8 tarafındaki çok daha eski sürüme karşı. PHP tarafında, 1.7 en son alt sürümünde 7.4’te tavan yaparken, 9 en az PHP 8.1 ister ve 8.2, 8.3, 8.4’ü destekler: iki uyumluluk aralığı arasında doğrudan örtüşme yoktur.
PrestaShop 9 ayrıca API Platform üzerine kurulu, OAuth kimlik doğrulamalı yeni bir yönetim API’si (Admin API) ekler. Tema tarafında, 9 Hummingbird temasını tanıtır, ama varsayılan tema çıkışta Classic kalır: 1.6’dan 1.7’ye geçişin aksine, zorunlu bir tema yeniden inşası söz konusu değildir.
Veritabanı yapısı geçilen her ana sürümde değişir; burada, tek işlemde veya iki aşamada yapılsın, autoupgrade’in güncelleme betiklerinin kapsaması gereken iki ana aşama vardır (1.7’den 8’e, ardından 8’den 9’a).
Bu büyüklükte bir sürüm farkında neler bozulur
- Legacy bir Smarty yönetim denetleyicisine dayanan bir eklenti, 9’da o denetleyicinin artık olmadığını fark eder: çökmez, sadece kaybolur.
- 1.7 için yazılmış bir çekirdek metot override’ı, PHP 8.1’den beri gerekli dönüş tiplerini yok sayar: bir uyarı değil, ölümcül bir hata tetikler.
- Bir dizi veya karakter dizisine erişmek için süslü parantez söz dizimini ($array{0}) kullanan bir eklenti, PHP 8.1 veya üzerinde çalışmayı durdurur.
- Eski web servis API’sine göre geliştirilmiş bir entegrasyon, Admin API’nin OAuth kimlik doğrulaması için tasarlanmamıştır, gözden geçirilmesi gerekir.
- config.xml dosyasında yalnızca 8. sürüme kadar uyumluluk bildiren bir eklenti, 9 üzerinde kurulum sırasında reddedilir.
Bu sıçramaya nasıl yaklaşıyorum
-
Denetim ve yol kararı
Eklentileri, denetleyici ve şablon override’larını ve mevcut web servis API’sini kullanan entegrasyonları listeliyorum, ardından işi nasıl böleceğime karar veriyorum. autoupgrade basamakları sırayla geçer, hiçbirini atlamaz: ara sürümlerin güncelleme betikleri her hâlükârda çalışır, tek soru bunların tek seferde mi akacağı yoksa özellikle legacy eklenti veya override varsa mağazayı kontrol etmek için 8’de durup durmayacağımdır.
-
Bağımsız tam yedekleme
Herhangi bir işlemden önce, autoupgrade’in iç yedeğine ek olarak tam bir SQL dökümü ve dosyaların tam kopyasını alıyorum; bunlar değiştirilecek sunucunun dışında saklanır.
-
Mağazanın bir kopyası üzerinde geçiş
Tüm prosedür, hedef PHP sürümü zaten devrede olan bir test ortamında tekrarlanır; böylece dönüş tipi hataları ve eksik denetleyiciler gerçek siteye dokunmadan önce ortaya çıkar.
-
Geri dönüşü olmayan nokta: veritabanı betiklerinin çalıştırılması
Şema güncelleme betikleri çalışmaya başladığında, temiz bir geri dönüş yalnızca dökümün geri yüklenmesiyle mümkündür. Bu adım yalnızca eklentiler ve override’lar test ortamında doğrulandıktan sonra başlatılır.
-
Legacy denetleyicilerin ve eklentilerin yeniden yazılması
Hâlâ Smarty üzerinde çalışan yönetim denetleyicileri ve bunlara bağımlı eklentiler, 9’un Symfony/Twig mimarisi için yeniden yazılır, sadece güncellenmez.
-
Üretime geçiş
Test sürümü onaylandıktan ve hedef PHP doğrulandıktan sonra, geçişi düşük trafikli bir zamana planlıyorum.
Sonradan nasıl doğruluyorum
Her aşamadan sonra eski ve yeni veritabanı arasında sipariş, müşteri ve ürün hacimlerini karşılaştırıyorum. Sipariş sürecini her ödeme yönteminde, yeniden yazılan denetleyicilerin her kullanıcı profili için doğru çalıştığını test ediyorum ve hiçbir API entegrasyonunun eski kimlik doğrulamasında takılı kalmadığından emin oluyorum. İlk günler PHP hata günlüğünü de izliyorum, özellikle nadiren kullanılan bir özellik devreye girdiğinde ortaya çıkan dönüş tipi hataları için.
İlgili sayfalar
-
PrestaShop 1.7’den 8’e geçiş
Eklenti ekosisteminiz hazır değilse, 9’u düşünmeden önceki ilk aşama.
-
PrestaShop 8’den 9’a geçiş
PHP 8 uyumluluğu zaten sağlandıktan sonraki ikinci aşama.
-
Geçiş sonrası uyumsuz eklentiler
Sorunsuz çalışan bir eklentinin bir güncellemeden sonra neden çöktüğü veya kaybolduğu.
-
Geçiş öncesi kontrol listesi
Bir geçişe başlamadan önce kontrol edilmesi ve yedeklenmesi gerekenler.
İhtiyacınızı bir dakikada anlatın
Size bir anket daha değil, doğrudan bir tahmin sunabilmem için birkaç hedefli soru.