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
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.
Listener’lar, XenForo’da belirli olaylar gerçekleştiğinde tetiklenen yapılardır. Örnekler:
Birçok eklenti, işlevini bu event’lere bağlanan listener’lar üzerinden yürütür.
Bu nedenle enableListeners = false ayarı:
XenForo mimarisi ise yalnızca event’lerden ibaret değildir.
Sonuç:
Listener’ların devre dışı olması, bu durumu etkilemez.
Bu durum:
Listener’ların kapatılması:
Bu tür hatalar, fark edilmesi en zor olanlardır.
Bu nedenle:
klasörünün fiziksel olarak devre dışı bırakılmasıdır.
Bu yöntem:
Gerçek acil durum yönetimi, XenForo’nun mimarisine uygun, deterministik ve güvenli yöntemlerle yapılmalıdır.
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
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
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
- Yetki kontrolü
- Veri manipülasyonu
- İş akışı değiştirme
3.2 Entity Lifecycle Metodları
Entity’ler içindeki:- _preSave
- _postSave
- _postDelete
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
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ı
Bu durum:
- Front-end hatalarının sürmesine
- Görsel ve JS kaynaklı problemlerin devam etmesine
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
- 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
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
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ı
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/addonsklasö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
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.