Ein Epic Fail in mehreren Akten:
Erster Akt
Nach dem Update 1.2.3 auf dem Server gestern Abend, ging zuerst gar nichts mehr. Sprich, nur noch YAMLcheck wurde ausgeführt, sonst kein anderes Modul. In den Logs von allen Prüfmodulen war nur noch das zu finden (Beispiel CS):
Code: Alles auswählen
Ruleset : phpBB PHP Strict Standard Extensions
Extensions : php,js,css
Parse error: syntax error, unexpected ':', expecting '{' in /vendor/symfony/polyfill-php80/bootstrap.php on line 23
Auf WampServer war natürlich alles okay als ich das Update hochgeladen habe. Nur auf dem Server dann nicht mehr. Darum zuerst wieder das Paket von 1.2.2 installiert, bis klar ist, was die Ursache ist.
Zweiter Akt
Nach einiger Suche fand ich dann heraus, dass es an der neuen Version von "symfony/debug" 4.4.9 lag, genauer gesagt an dessen neuer Abhängigkeit "symfony/polyfill-php80" welches automatisch installiert wurde. Nach einem Downgrade auf "symfony/debug" 4.4.8 mit automatischer Deinstallation von "symfony/polyfill-php80" ging wieder alles. So hab ich wenigstens auch mal "conflict" in
composer.json
kennengelernt, mit dem man gezielt die Installation spezifischer Versionen unterbinden kann. ^^ Aber okay, das war ja nur Symptom-Bekämpfung.
Dritter Akt
Dann schaute ich mir die betreffende Stelle im Code von "symfony/polyfill-php80" an. Dort wurden explizite Typdeklarationen für Rückgabewerte bei Funktionen definiert. Das ist etwas, was erst bei PHP 7.0 eingeführt wurde. Aber laut der Fehlermeldung konnte PHP damit nichts anfangen, was mich stutzig machte "weil ja PHP 7.2 läuft". Theorie und Praxis.

Also baute ich einige Debug Anzeigen in YAMLcheck ein, unter anderem auch für die PHP Version und traute meinen Augen nicht, als ich bei der PHP Version "5.6.38-nmm2" sah.
Des Rätsels Lösung nach vielen Stunden Fehlersuche war also schlicht eine falsche PHP Version. EC lief zwar wie beabsichtigt mit PHP 7.2, aber alle Analysetools liefen bisher mit PHP 5.6.38, weil diese mit der PHP CLI Version ausgeführt werden. Darum wurden jetzt nach dem neuesten Composer Update alle von Composer abhängigen Tools nicht mehr korrekt ausgeführt, weil sich dadurch auch die Abhängigkeit der PHP Version geändert hat. Nach Untersuchung der verschiedenen Composer Pakete stellte sich dann heraus, das die Abhängigkeit bezüglich PHP schon von Anfang an bei mindestens 7.1.3 lag. Dass EC seit der Umstellung auf ein Composer Projekt bei Version 1.2.0 also überhaupt noch funktioniert hat, war einfach nur Zufall, weil vermutlich keine Funktion/Codestelle der Analysetools/Abhängigkeiten angesprochen wurde, die zwingend 7.1.3 vorausgesetzt hätte. Bis jetzt.
Letzter Akt
Von WampServer wusste ich zwar, dass es 2 Versionen von PHP gibt, eine für Web und eine für CLI. Aber ich wusste nicht, das auf dem Server meines Hosters eine andere Version für CLI lief als für Web, weil ich in der Domain-Verwaltung nur eine einzige PHP Version einstellen kann. Darum ging ich bisher davon aus, dass das automatisch auch für CLI gilt. Erst nach einer kurzen Suche in der Onlinehilfe meines Hosters wurde klar, dass man andere CLI Versionen explizit per Pfadangaben ansprechen muss.
1.2.3 online... uff...
Epilog
Neben der reinen Fehlerbehebung mit Lerneffekt hat mein Epic Fail aber auch einen praktischen Nutzen: Bisher lief EC quasi mit angezogener Handbremse, jetzt hat EC die ganze Power. Das fällt insbesondere bei grösseren Erweiterungen auf. Zum Testen habe ich das überarbeitete Portal Paket von Kirk verwendet und hier die Ergebnisse:
Vorher:
TIME=00:00:36.831
Jetzt:
TIME=00:00:14.089
Also mehr als doppelt so schnell. Das hängt aber auch von der Erweiterung ab, besonders bei kleineren habe ich auch schon den Faktor 3 ermittelt. EC ist ein gutes Beispiel dafür, dass PHP 7 um einiges mehr Performance hat als PHP 5.