Projeler ve ajans desteği için müsait · Hızlı yanıt, işi yapan kişiden

Birbirinin ayağına basan iki eklenti

Her eklenti tek başınayken kusursuz çalışır. Birlikte etkinleştirildiklerinde sepeti bozar, bir sayfayı boşaltır ya da yönetim panelini kilitler. Çakışma açıklamalar okunarak tahmin edilmez: yalıtarak kanıtlanır ve bunun bir yöntemi vardır.

Sorunumu anlatayım Mesaj gönderin

Hatadan çok çakışmaya işaret edenler

  • Arıza, başka hiçbir değişiklik olmadan tam bir eklenti kurulumu anında ortaya çıktı
  • Sorunlu eklentiyi devre dışı bırakmak sorunu çözüyor, ama diğer eklenti işlevini yitiriyor
  • Bir sayfa ortasında kesiliyor, alt bölümü artık görünmüyor
  • Bir buton tepki vermiyor ve tarayıcı konsolunda betik hatası görünüyor
  • Bir etkinleştirmenin hemen ardından yönetim paneline erişilemiyor

Karşılaştığım dört çakışma biçimi

Geçersiz kılma çakışması. PrestaShop'ta bir eklenti, bir geçersiz kılma dosyası bırakarak çekirdek bir sınıfın davranışını değiştirebilir. Aynı sınıfın aynı yöntemini değiştirmek isteyen iki eklenti bir arada bulunamaz: ikincisi kurulmayı reddeder ya da daha kötüsü, dosyalar elle bırakılmışsa birinciyi sessizce ezer. Etkin olduğu hâlde «artık hiçbir şey yapmayan» bir eklentinin en sık nedeni budur.

Sıra çakışması. Aynı yere bağlanmış iki eklenti art arda çalışır ve ikincisi birincinin yaptığını geri alabilir: bir toplamı yeniden hesaplamak, bir içeriği değiştirmek, bir fiyatı yeniden tanımlamak. Sıra değiştirilebilir ve bazen sırayı değiştirmek her şeyi çözer.

Kitaplık çakışması. İki eklenti aynı JavaScript kitaplığının kendi sürümünü yükler. Sayfa ikisini de yükler, ikincisi birincisini ezer ve ilk sürüme bağlı olan her şey durur. Bu, sunucu günlüklerinde değil tarayıcı konsolunda görünür.

Ad çakışması. İki eklenti aynı adı taşıyan bir işlev ya da sınıf bildirir ve PHP ölümcül bir yeniden bildirim hatasıyla durur. WordPress'te bu, aynı üçüncü taraf kitaplığı önlem almadan içine alan eklentilerin klasik sorunudur.

Mağazayı bozmadan sorumluyu nasıl bulurum

  1. Üretimde değil bir kopya üzerinde çalışmak

    Sırayla devre dışı bırakarak yalıtmak, satış yapan bir mağazada kabul edilebilir değildir. Siteyi çoğaltır ve canlıda kabul edilemeyecek işlemleri orada yaparım.

  2. Hiçbir şeye dokunmadan önce günlükleri okumak

    Ölümcül bir yeniden bildirim hatası dosyayı ve satırı adıyla verir: çakışma hiçbir şey devre dışı bırakılmadan bir dakikada bulunur.

  3. Teker teker değil ikiye bölerek ilerlemek

    Eklentilerin yarısını devre dışı bırakır, denerim, sonra kalan yarıyı bölerim. Çok eklentili bir mağazada bu, deneme sayısını belirgin biçimde azaltır.

  4. Aynı anda tarayıcı konsoluna bakmak

    Bir JavaScript çakışması sunucu tarafında iz bırakmaz. Sayfa yükleniyor ama bir buton tepkisiz kalıyorsa cevap PHP günlüklerinde değil konsoldadır.

Sorumlu bulunduktan sonra dört olası çıkış

En basiti: çakışma bir sonucun ezilmesinden geliyorsa çalışma sırasını değiştirmek. İkincisi: iki eklentiden birinin işlevini, ikisini birden yapan tek bir eklentiye taşımak; bu, çakışmayı kökünden kaldırır. Üçüncüsü: ikisinden birini, aynı şeyi geçersiz kılmayan bir çözümle değiştirmek. En kalıcısız olan dördüncüsü ise sorunlu eklentiyi kendi kodunda düzeltmektir; ancak bu düzeltme yalıtılmadıysa bir sonraki güncellemede kaybolur.

Çakışmanın kazadan çok kırılgan bir alışkanlıktan geldiğini her zaman belirtirim: yalnızca bir alan eklemek için çekirdek sınıf geçersiz kılması bırakan ya da ortak bir kitaplığın kendi kopyasını taşıyan bir eklenti, ileride başka eklentilerle yeni çakışmalar üretecektir. Onu değiştirmek, her seferinde yamamaktan bazen ucuza gelir.

İlgili sayfalar

İhtiyacınızı bir dakikada anlatın

Size bir anket daha değil, doğrudan bir tahmin sunabilmem için birkaç hedefli soru.

version
besoin
etat
theme (facultatif)
Size dönebilmem için en az bir e-posta veya telefon numarası belirtin.

Size dönebilmem için en az bir e-posta veya telefon numarası belirtin.

Sıkça sorulan sorular

Bir eklentiyi kurmadan önce çakışma öngörülebilir mi?
Kısmen. Çekirdek sınıf geçersiz kılmaları bırakıp bırakmadığına ve ortak kitaplıkları içine alıp almadığına bakılabilir: sıkıntıyı haber veren iki işaret bunlardır. Ama kesinlik ancak sitenin bir kopyasına kurarak elde edilir.
Sorumluyu bulmak için eklentileri tek tek kapatmak gerekir mi?
En yavaş yöntem budur. Art arda ikiye bölme aynı sonuca çok daha az denemeyle ulaşır ve önceden günlükleri okumak çoğu zaman bu adımı tümüyle atlamayı sağlar.
İki eklenti aynı sınıfı geçersiz kılabilir mi?
Aynı yönteme dokunmadıkları sürece aynı sınıfı geçersiz kılabilirler. İkinci kurulumu engelleyen, iki kez yeniden tanımlanan aynı yöntemdir.
Çakışma eklentiden değil temadan gelebilir mi?
Evet ve sık olur. Bir kitaplığın kendi sürümünü taşıyan ya da şablonları güncel tutmadan kopyalayan bir tema, tam olarak çakışan bir eklenti gibi davranır. Bunu geçici olarak varsayılan temaya geçerek denerim.
Çakışma giderildikten sonra testler yenilenmeli mi?
Evet ve yalnızca sorun çıkaran sayfada değil: çalışma sırasını değiştirmek ya da bir geçersiz kılmayı kaldırmak, belirtiyi başka yere, tipik olarak sipariş akışına taşıyabilir.