
MegaforBB — Düzeltme Özeti
1. Admin panel — Varsayılan dil değişmiyordu
Dosya:App/Controllers/AdminLanguageController.php
Sorun:“Set as Default” (Varsayılan yap) butonuna basıldığında başarı bildirimi geliyordu ancak dil listesinde varsayılan dil rozeti ve buton durumu değişmiyordu.
Neden:
setDefault()yalnızcasettingstablosundakidefault_localedeğerini güncelliyordu.Admin dil listesi, veritabanındaki
languages.is_defaultsütununu doğrudan okuyordu.Bu iki kaynak senkronize değildi.
Çözüm:
Dil listesinde
is_default, artıksettings.default_localedeğerine göre hesaplanıyor.setDefault()çağrıldığındalanguagestablosundakiis_defaultbayrakları da güncelleniyor.Varsayılan dil silme kontrolü, ayar tablosundaki
default_localedeğerine göre yapılıyor.Çeviri düzenleme sayfasında varsayılan dil kaynağı
Language::getDefault()yerinesettings.default_localeolarak düzeltildi.
2. Admin panel — Cron sayfasındaki alakasız WoltLab metni
Dosyalar:
Inc/Template/admin/default/views/cronjobs/index.html.twigInc/Lang/tr.phpInc/Lang/en.phpApp/Controllers/AdminCronjobsController.php(yorum satırı)
Sorun:Cronjobs sayfasında “Zamanlanmış görevler (WoltLab karşılaştırması)” başlığı ve docs/CRON_JOBS_REPORT.md referansı vardı. Bu içerik MegaforBB projesiyle ilgili değildi.
Çözüm:
WoltLab karşılaştırma metni kaldırıldı.
Rapor dosyası referansı kaldırıldı (
docs/CRON_JOBS_REPORT.mdprojede zaten yoktu).Başlık için yeni dil anahtarı eklendi:
admin.cronjobs.tasks_titleTR: Zamanlanmış görevler
EN: Scheduled tasks
3. Admin panel — Manuel cron çalıştırma hatası
Dosya:App/Controllers/AdminCronjobsController.php
Sorun:“Tüm cronu çalıştır” butonuna basıldığında şu hata görülüyordu:
Request failed (timeout or connection error). Run cron from command line: php public/cron.phpHosting ortamında ise php-fpm8.4 kullanım yardım metni dönüyordu.
Neden:
Eski kod cron’u HTTP ile kendi kendine çağırıyordu (
file_get_contents).Yerel ortamda (Laragon) veya paylaşımlı hostingde bu yöntem sık sık başarısız oluyordu:
app.urlyanlış domain’e işaret edebiliyorduallow_url_fopenkapalı olabiliyorduSunucunun kendine HTTP isteği atması timeout’a yol açabiliyordu
Linux hostinglerde
PHP_BINARYçoğu zamanphp-fpm8.4olur; bu binary cron script’ini çalıştırmaz, FPM yardım metnini basar.
Not: Bu sorun, hostingte cron job zamanlanmamış olmasından kaynaklanmaz. Panel butonu crontab’dan bağımsız çalışmalıdır.
Çözüm:
Cron önce CLI ile çalıştırılıyor:
php public/cron.php token=...CLI mümkün değilse HTTP fallback devreye giriyor.
HTTP fallback URL’si artık mevcut isteğin host’unu kullanıyor (
app.urlyerine).php-fpmbinary’si tespit edilip atlanıyor; yerine/usr/bin/php8.4,/usr/bin/php, cPanel yolları vb. aranıyor.Yanlışlıkla FPM help çıktısı gelirse HTTP fallback’e geçiliyor.
Hosting cron önerisi (ayrı konu):Otomatik çalışması için hosting panelinden crontab eklenmelidir:
*/5 * * * * /usr/bin/php8.4 /path/to/public/cron.php token=CRON_TOKENINIZDeğiştirilen dosyalar (özet)
Dosya | Değişiklik |
|---|---|
| Varsayılan dil senkronizasyonu |
| CLI cron çalıştırma, php-fpm düzeltmesi |
| WoltLab metni temizlendi |
|
|
|
|

