Tarih / Date: 21 Haziran 2026 / June 21, 2026
Türkçe
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 |
|
|
|
|
English
1. Admin panel — Default language did not change
File:App/Controllers/AdminLanguageController.php
Issue:Clicking “Set as Default” showed a success notification, but the default badge and button state in the language list did not update.
Cause:
setDefault()only updateddefault_localein thesettingstable.The admin language list read
languages.is_defaultdirectly from the database.These two sources were out of sync.
Fix:
is_defaultin the list is now derived fromsettings.default_locale.setDefault()also updatesis_defaultflags in thelanguagestable.Default-language delete protection now uses
settings.default_locale.The translation edit page now uses
settings.default_localeinstead ofLanguage::getDefault().
2. Admin panel — Irrelevant WoltLab text on cron page
Files:
Inc/Template/admin/default/views/cronjobs/index.html.twigInc/Lang/tr.phpInc/Lang/en.phpApp/Controllers/AdminCronjobsController.php(comment only)
Issue:The Cronjobs page showed “Scheduled tasks (WoltLab comparison)” and a reference to docs/CRON_JOBS_REPORT.md. This content was unrelated to MegaforBB.
Fix:
Removed WoltLab comparison text.
Removed report file reference (
docs/CRON_JOBS_REPORT.mddid not exist in the project).Added new language key:
admin.cronjobs.tasks_titleTR: Zamanlanmış görevler
EN: Scheduled tasks
3. Admin panel — Manual cron run failure
File:App/Controllers/AdminCronjobsController.php
Issue:Clicking “Run full cron” showed:
Request failed (timeout or connection error). Run cron from command line: php public/cron.phpOn shared hosting, the output was the php-fpm8.4 usage/help text instead.
Cause:
The old code triggered cron via HTTP self-request (
file_get_contents).This often fails on local (Laragon) or shared hosting environments:
app.urlmay point to the wrong domainallow_url_fopenmay be disabledSelf HTTP requests can time out
On Linux hosting,
PHP_BINARYis oftenphp-fpm8.4, which does not run PHP scripts — it prints FPM help instead.
Note: This is not caused by missing crontab scheduling. The admin button should work independently of server cron.
Fix:
Cron runs via CLI first:
php public/cron.php token=...Falls back to HTTP if CLI is unavailable.
HTTP fallback URL now uses the current request host (not
app.url).Detects and skips
php-fpmbinary; searches for CLI paths such as/usr/bin/php8.4,/usr/bin/php, cPanel paths, etc.If FPM help output is detected, falls back to HTTP.
Recommended hosting cron (separate topic):For automatic execution, add a crontab entry in your hosting panel:
*/5 * * * * /usr/bin/php8.4 /path/to/public/cron.php token=YOUR_CRON_TOKENChanged files (summary)
File | Change |
|---|---|
| Default language sync |
| CLI cron execution, php-fpm fix |
| Removed WoltLab text |
| Added |
| Added |
Test checklist / Test listesi
# | TR | EN |
|---|---|---|
1 | Admin → Diller → farklı dil “Varsayılan yap” → rozet güncellenmeli | Admin → Languages → Set as Default → badge should update |
2 | Admin → Cronjobs → WoltLab metni görünmemeli | Admin → Cronjobs → no WoltLab text |
3 | Admin → Cronjobs → “Tüm cronu çalıştır” → | Admin → Cronjobs → Run full cron → success output |
4 | Hosting crontab ayrıca yapılandırılmalı (otomatik çalışma için) | Configure hosting crontab separately (for automatic runs) |
