İçeriğe geç

CPalius CMF 1.1.3

Yayın: 2026-09-16 · Kanal: kararlı · Kritik: hayır

Yama kurucusunun kendisine ait bir düzeltme; 1.1.2 canlı bir siteye uygulanırken ortaya çıktı. 1.1.2'de olan herkes, bir sonraki yamadan önce bunu almalı.

Ne bozuldu

1.1.2'yi uygulamak siteyi şu hatayla düşürdü:

ArgumentCountError: Too few arguments to function
Modules\Forum\Service\ForumReputationService::__construct(),
6 passed in .../cache/prod/ContainerXXXX/getForumReputationServiceService.php
and exactly 7 expected

Yeni sınıf dosyası diskte, onu kuran eski fabrika dosyası önbellekte. Yama zaten uygulanmış olduğu için tekrar denemek de bir işe yaramıyordu.

Neden

Kernel önbellek temizliği bilerek shutdown'a erteleniyor — hâlâ çalışan bir isteğin derlenmiş konteynerini altından çekmek kendi başına bir ölüm sebebi. Bunun bedeli bir pencere: apply() döndüğü andan yanıt gönderilene kadar çalışan her satır, yeni sınıf dosyalarını eski konteynerden geçiriyor.

Yama ekranı tam da o pencerede yapılabilecek en kötü iki şeyi yapıyordu: güncelleme planlayıcısını çalıştırıyor ve güncelleme sayfasını baştan render ediyordu. 1.1.2 bir servisin kurucusunu altı argümandan yediye çıkardı, olan oldu. Önceki yamaların kurtulmasının tek sebebi, hiçbirinin bir kurucuyu değiştirmemiş olmasıydı.

Düzeltmeler

  • Başarı yolu artık yalnızca yönlendirme. RedirectResponse yalnızca router'a ihtiyaç duyar, o da yama yazılmadan çok önce yüklenmişti. Temizlik eskisi gibi shutdown'da çalışıyor, ardından gelen GET ise yeni koddan derlenmiş konteynerle karşılanıyor. Yama günlüğü yönlendirmeden sağ çıkıyor ve indiğiniz sayfada gösteriliyor.

  • Başarısız temizlik artık sessiz değil. Temizlikteki her dosya sistemi çağrısı @ ile bastırılmış; yani "hata çıkmadı", "dizin silindi" anlamına hiç gelmiyordu — üstelik operatöre çoktan "önbellek temizlendi" gösterilmiş oluyordu. Temizlik artık kendini doğruluyor (geriye kalan derlenmiş fabrika dosyalarını sayarak), çalışmadıysa cp-core/var/update/cache-purge-failed.json bırakıyor, ve güncelleme ekranı bunu ne yapılması gerektiğiyle birlikte kırmızı kutuda gösteriyor.

    Bu en çok paylaşımlı hostingte önemli: önbellek dizini çoğu zaman PHP'nin çalıştığı kullanıcıdan başka birine ait oluyor.

  • Hata yolu değişmedi, tam ekranı render etmeye devam ediyor: kurucu, hatayı fırlatmadan önce eski dosyaları geri yüklüyor; yani ağaç konteynerle yine uyumlu ve bunda sakıncalı bir şey yok.

Yükseltme notları

Yamayı uygulamak dışında yapılacak bir şey yok.

Şu an 1.1.2'de takılı kaldıysanız — site ArgumentCountError ile 500 veriyorsa — açılmayan bir panelden yama uygulanamaz. FTP ile cp-core/var/cache/prod/ içindeki her şeyi silin (klasörün kendisi kalsın), sonra siteyi açın. İlk istek konteyneri yeniden derler, birkaç saniye sürer. Hostingte OPcache opcache.validate_timestamps=0 ile çalışıyorsa hosting panelinden PHP'yi de yeniden başlatın; aksi hâlde silinen dosyalar bellekten servis edilmeye devam eder.

Son güncelleme: 13.10.2026