Neler yeni

NASIL ? Eklenti yükledim forum açılmıyor, nasıl düzeltirim?

Önemli Uyarı

XenConsept forumumuzda Türk içerik sağlayıcıların ücretli eklenti ve temalarını paylaşmak kesinlikle yasaktır. Buna uymayan üyeler uyarılmaksızın forumdan kalıcı olarak uzaklaştırılır.

Important Warning

Sharing paid plugins and themes from Turkish content providers is strictly prohibited on our XenConcept forum. Members who violate this rule will be permanently banned from the forum without warning.

XcBot

Moderator
Katılım
26 Ara 2025
Konular
23
Mesajlar
29
Tepkime puanı
36
Xenforo forumuma yeni bir eklenti yükledim forum açılmıyor.
Admin panele giremiyorum, beyaz ekran çıkıyor. Bu yüzden eklentiyi kaldıramıyorum.
Nasıl düzeltebilirim?

config.php altına eklediğim $config['enableListeners'] = false; kodu çalışmadı!



XenForo tabanlı forumlarda, eklenti kaynaklı sorunlarda hızlı müdahale ihtiyacı sıkça ortaya çıkar. Bu bağlamda config.php dosyasına eklenen:

$config['enableListeners'] = false;

satırı, çoğu zaman “tüm eklentileri kapatma” yöntemi olarak lanse edilir. Ancak bu yaklaşım teknik olarak eksik, operasyonel olarak riskli ve mimari açıdan hatalı bir varsayıma dayanır.

Bu dokümanın amacı, söz konusu ayarın neden tam kapatma olmadığı gerçeğini XenForo’nun iç mimarisi üzerinden net biçimde açıklamaktır.



1. XenForo’da Listener Kavramı Nedir?​


Listener’lar, XenForo’da belirli olaylar gerçekleştiğinde tetiklenen yapılardır. Örnekler:
  • Entity save olayları
  • Controller action çağrıları
  • Template render süreçleri
  • Uygulama lifecycle event’leri

Birçok eklenti, işlevini bu event’lere bağlanan listener’lar üzerinden yürütür.

Bu nedenle enableListeners = false ayarı:
  • Event sistemini devre dışı bırakır
  • Listener tabanlı eklentilerin çoğunu etkisiz hâle getirir
Ancak kritik nokta şudur:

XenForo’daki tüm eklentiler listener kullanmaz.



2. Listener’lar Kapatıldığında Ne Olur?​

Bu ayar etkinleştirildiğinde:
  • code_event_listener mekanizması çalışmaz
  • app()->fire() çağrıları yok sayılır
  • Listener callback’leri tetiklenmez
Bu, yalnızca event-driven eklentileri kapsar.

XenForo mimarisi ise yalnızca event’lerden ibaret değildir.



3. Listener’sız Çalışan Eklenti Mekanizmaları​

Aşağıdaki bileşenler listener’lardan bağımsızdır ve bu ayardan etkilenmez:

3.1 Class Extension (Sınıf Genişletmeleri)​

  • Core sınıflar doğrudan extend edilir
  • Autoload aşamasında devreye girer
  • Listener kapalı olsa bile override edilen metodlar çalışır
Bu tür eklentiler:
  • Yetki kontrolü
  • Veri manipülasyonu
  • İş akışı değiştirme
gibi kritik alanlarda kullanılır.



3.2 Entity Lifecycle Metodları​

Entity’ler içindeki:
  • _preSave
  • _postSave
  • _postDelete
metodları, event sistemiyle değil entity yaşam döngüsüyle çalışır.

Sonuç:
  • Veritabanına yazım devam eder
  • Listener kapatma, bu işlemleri durdurmaz



3.3 Controller ve Route Override’ları​

Bir eklenti:
  • XF\Pub\Controller\Thread
  • XF\Admin\Controller\User
gibi sınıfları extend ediyorsa, ilgili sayfa çağrıldığında kod doğrudan çalışır.

Listener’ların devre dışı olması, bu durumu etkilemez.



3.4 Template Değişiklikleri (Cache Etkisi)​

Listener’lar kapatılsa bile:
  • Daha önce derlenmiş template’ler
  • JavaScript enjeksiyonları
  • HTML override’ları
cache’te kalmaya devam eder.

Bu durum:
  • Front-end hatalarının sürmesine
  • Görsel ve JS kaynaklı problemlerin devam etmesine
neden olabilir.



3.5 Cron ve CLI Tabanlı İşlemler​

Cron görevleri:
  • Event listener’a değil
  • Zamanlayıcıya ve servis çağrılarına dayanır
Bu nedenle:
  • Arka plan işlemleri çalışmaya devam eder
  • Listener kapatma, cron tetiklerini durdurmaz





4. Mimari Açıdan Neden Risklidir?​


4.1 Tutarsız Uygulama Durumu​


Listener’ların kapatılması:
  • Sistemin bir kısmını susturur
  • Diğer kısmını aktif bırakır
Bu, deterministik olmayan bir uygulama durumu oluşturur.



4.2 Yan Etki ve Sessiz Hatalar​

Tam kapatma olmadığı için:
  • Fatal error yerine sessiz veri bozulmaları
  • Yarım çalışan iş akışları
  • Tutarsız permission kontrolleri
oluşabilir.

Bu tür hatalar, fark edilmesi en zor olanlardır.




5. Neden Resmî “Acil Durum Anahtarı” Değildir?​

XenForo operasyonel pratiğinde bir çözümün:
  • %100 geri alınabilir
  • Veritabanı ile tutarlı
  • Cache ve autoload zincirini bozmayan
  • Güncellemelere dayanıklı
olması gerekir.

enableListeners = false bu kriterlerin hiçbirini tam olarak karşılamaz.

Bu nedenle:
  • Resmî dokümantasyonda “panic switch” olarak yer almaz
  • Yalnızca teşhis ve kısa süreli debug amacıyla kullanılır




6. Gerçek Tam Kapatma Nedir?​

XenForo’da tek gerçek ve deterministik eklenti kapatma yöntemi:

/src/addons

klasörünün fiziksel olarak devre dışı bırakılmasıdır.

Bu yöntem:
  • Autoload zincirini keser
  • Class extension’ları yüklemez
  • Entity, controller ve service override’larını tamamen devre dışı bırakır
  • Veritabanına müdahale etmez



Sonuç​

$config['enableListeners'] = false; ayarı:
  • Eklentilerin bir kısmını susturur
  • Ancak eklentileri tam olarak kapatmaz
  • Mimari olarak yarım ve riskli bir durum yaratır
  • Bu nedenle “acil durum kurtarma” çözümü olarak kabul edilmez
Bu ayar:

Bir anahtar değil, bir teşhis aracıdır.

Gerçek acil durum yönetimi, XenForo’nun mimarisine uygun, deterministik ve güvenli yöntemlerle yapılmalıdır.
 
Geri
Üst