- folder.class.php: @array_slice(@stat()) brach unter PHP 8 mit TypeError
ab, wenn Map-Dateinamen Sonderzeichen enthalten (MatchSettings erstellen
-> HTTP 500)
- timedate.class.php: secToMillisec() auf int32 begrenzen; LapsTimeLimit
wird in ms angezeigt und beim Speichern erneut mit 1000 multipliziert,
der Server lehnte 2147483647000 ab (bestehender AdminServ-Bug)
Unter PHP 8 sind viele fruehere Notices (Undefined array key, Attempt to
read property ...) Warnings. Der RemoteCP-Errorhandler ignoriert diese
ohne Debug-Modus wie bisher unter PHP 7; im Test wuchs errors.log sonst
um rund 500 KB in 15 Minuten. Zusaetzlich rotiere ich remotecp/cache/*.log
per logrotate (10 MB, 5 Dateien).
- Php8Compat.php: nicht-statische Methoden, die als Klasse::methode()
aufgerufen werden und kein $this nutzen, als static markieren
(RemoteCP Core/Plugins, AdminServ Zip)
- web_access.inc.php: Response als array() statt '' initialisieren
(behebt Illegal string offset in web_access, xmlrpc_db, mania_karma)
- plugin.teamspeak3.php: count() auf null entschaerft
PHP 7.4 ist seit 2022 EOL und bekommt keine Fixes mehr (u. a. PHP2Shell,
CVE-2026-109618/109619). Ich stelle das Image deshalb auf debian:trixie-slim
mit PHP 8.4.27 um.
- Php8Compat.php: ergaenzt __construct() fuer PHP-4-Konstruktoren und stellt
String-Offsets $str{0} auf $str[0] um (AdminServ, RemoteCP, XAseco)
- RunTrackmaniaServer.sh: Patcher bei jedem Start auf die Volumes anwenden,
mysqli_report(MYSQLI_REPORT_OFF) fuer den mysql_*-Shim von XAseco
- Bullseye-Archive-Repositories entfernt
RemoteCP 4.0.3.5 hat nach jedem Neustart Deprecation-Meldungen oben auf der
Seite ausgegeben, obwohl PHP_DISPLAY_ERRORS=false gesetzt war.
Ich patche RemoteCP jetzt bei jedem Containerstart idempotent (greift auch
bei bestehenden Volumes):
- rcp_textparser.class.php: $hex{n} -> $hex[n], TMFColorParser-Konstruktor
auf __construct() umgestellt
- GbxRemote.inc.php: $f_v{n} -> $f_v[n]
- core.functions.php: display_errors/display_startup_errors an
PHP_DISPLAY_ERRORS gekoppelt statt hart auf 1; PHP-Warnings werden ohne
Debug-Modus nur noch in cache/errors.log geschrieben
AdminServ erfordert zwingend Schreibrechte auf ./logs/ (777) und die Konfigurationsdateien (666). Das fruehere automatische Zuruecksetzen auf 755 fuehrte nach Reboots oder Wiederherstellung von Backups zum Fehler 'path was not required rights: ./logs/'. Bei jedem Start werden nun 777 und www-data Ownership fuer ./logs/ sichergestellt.
Bare-constant-Zugriffe (pt_custom, pt_points, ...) in CustomPoints/index.php
durch defined()-Prüfungen ersetzt, um PHP 7.2+ Warnungen zu vermeiden.
Zusätzlich werden im Produktivmodus (PHP_DISPLAY_ERRORS=false) Warnungen
und Notices in der PHP error_reporting unterdrückt.
- Gepatchte index.php als assets/config/remotecp/plugins/CustomPoints/index.php
- Dockerfile: COPY der gepatchten Datei statt fragiler sed-Patches
- RunTrackmaniaServer.sh: Auto-Patch für bestehende Volumes beim Container-Start
- error_reporting im Produktivmodus um ~E_WARNING & ~E_NOTICE ergänzt
Closes#4
- Default von allwarmupduration in custom_game_settings.txt auf 0 gesetzt
- Neue Umgebungsvariable ALLWARMUPDURATION (Default: 0)
- Startup-Script wendet ENV auf MatchSettings an (inkl. FORCE_CONFIG_UPDATE)
- Dokumentation ergänzt (umgebungsvariablen.md)
Closes#2