Ein exotisches Problem, ich hoffe.
Don't do this at home: Contao 2.11.16 ist 5 Jahre alt und sollte upgegradet werden.
Ich will trotzdem kurz dokumentieren, wie sich eine Typolight-Site soweit fixen lässt, dass sie unter PHP7 wieder angezeigt wird und das
Backend wieder läuft. Alle Edits stammen aus diesem Forum, ich trage sie hier nur zusammen.
Vor Anwendung der find/sed-Fixes bitte alle PHP-Files sichern, diese Kommandos ändern blind und grob den Programmcode, unerwünschte
Nebenwirkungen sind wahrscheinlich.
1. Datenbanktreiber, wenn nötig, von Mysql auf Mysqli umstellen:
/system/config/localconfig.php: $GLOBALS['TL_CONFIG']['dbDriver'] = 'MySQLi';
2. String-Klasse in StringUtils umbenennen ('String' ist seit PHP7 ein reserviertes Token):
mv /system/libraries/String.php /system/libraries/StringUtil.php
vi /system/libraries/StringUtil.php:
class String => class StringUtil
new String(); => new StringUtil();
3. Aufrufe der String-Klasse korrigieren:
find . -name "*.php" -exec sed -i "s/import('String')/import(StringUtil)/g" \{\} \;
find . -name "*.php" -exec sed -i 's/->String->/->StringUtil->/g' \{\} \;
4. Precedence-Problem bei Array-Indizes in Methodenaufrufen ($this->$foo[$bar] umschreiben in $this->{$foo[$bar]}):
find . -name "*.php" -exec sed -i "s/->\(\$[a-zA-Z0-9]*\[[^\]]*\]\)/->{\1}/g" \{\} \;
vi ./system/modules/frontend/PageRegular.php
ändere hier $this->Template->$arrModule['col'] in $this->Template->{$arrModule['col']}
Ihr könnt ja hier berichten, wenn ihr weitere Probleme und Lösungen findet.
Grüße!
Felix
Lesezeichen