Stehe gerade auf dem Schlauch: Nach kleineren Änderungen an einem Modul erhalte ich im Frontend nur noch folgende Fehlermeldung.
Fatal error : Uncaught TypeError: Argument 1 passed to OxidEsales\EshopCommunity\Core\Exception\ExceptionHandler::handleUncaughtException() must be an instance of Exception, instance of ParseError given in /var/www/html/oxid/vendor/oxid-esales/oxideshop-ce/source/Core/Exception/ExceptionHandler.php:114 Stack trace: #0 [internal function]: OxidEsales\EshopCommunity\Core\Exception\ExceptionHandler->handleUncaughtException(Object(ParseError)) #1 {main} thrown in /var/www/html/oxid/vendor/oxid-esales/oxideshop-ce/source/Core/Exception/ExceptionHandler.php on line 114
Erst habe ich die Änderungen wieder zurückgebaut, aber ohne Erfolg, die Meldung bleibt beharrlich. Dann habe ich noch das Modul psExceptionHandler von Proudcommerce mit der Hoffnung installiert, eine aussagekräftige Mitteilung zu erhalten, aber leider auch dies ohne Erfolg.
D.h. die Funktion bekommt ein anderes Parameter als erwartet.
Weil es ein ParseError ist, gibts wahrscheinlich ein Problem beim Parsen von PHP Code, welches hier nicht verarbeitet werden konnte, weil die Funktion eben eine Exception und kein Parse Error haben will.
Hier schließt sich dann der Kreis.
Bekomme die Fehlermeldung aber beim Aufruf der Startseite, die ich nicht geändert habe. Mein Modul erweitert den Kundenaccount. Außerdem habe ich die Änderungen komplett wieder zurückgebaut. Daher kann ich gerade nicht nachvollziehen, wo der ParseError stattfinden soll.
Auch wenn ich mein Modul übers Backend deaktiviere, lässt sich das Frontend nicht mehr aufrufen. Bleibt mir wohl nichts anderes übrig als alles nochmals durchzugehen
Sorry, hatte ich nicht erwähnt, das tmp-Verzeichnis hatte ich natürlich auch geleert. Werde heute Abend einfach nochmal alles durchgehen. Vielleicht habe ich aus Versehen Dateien verschoben oder so, passiert mir mit dem Touchpad ab und an.
Habe zwar noch nicht herausgefunden, was das Problem mit meinem Modul ist, aber zumindest scheint es die Ursache zu sein. Im Backend beim Menüpunkt ‘Erweiterungen’ bei dem Reiter ‘Installierte Shop-Module’ hatte ich folgende Meldung:
Es wurden ungültige Module erkannt.
Möchten Sie alle registrierten Modulinformationen und gespeicherten Konfigurationseinstellungen löschen?
Nachdem ich das Löschen bestätigt habe, war das Frontend wieder erreichbar. Baue das Modul nun schrittweise wieder auf. Mal sehen, wo das Problem wieder auftritt.
So, habe nun auch meinen Fehler gefunden, der den parseError verursacht. In der xyz_lang.php hatte ich an einem Zeilenende ein Semikolon statt eines Kommas.
Eine ordentliche Fehlermeldung habe ich aber erst erhalten, nachdem ich wie in dem Artikel https://www.zoks.net/kompatibilitat-von-oxid-shop-ce-und-php-7-0/
im Abschnitt “OXID für PHP 7 Errors und Exceptions anpassen” in der Datei
/vendor/oxid-esales/oxidshop-ce/source/Core/Exception/ExceptionHandler.php
alle Methodenaufrufe, denen eine Exception als Parameter mitgegeben wird entsprechend
public function handleUncaughtException(\Exception $exception)
in
public function handleUncaughtException($exception)
geändert habe.
Danach hatte ich endlich eine auswertbare Fehlermeldung erhalten, die mir den Fehler in der xyz_lang.php ausgegeben hat. Nun funktionierts!