Fehlermeldung ohne Aussage


#1

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.

Hat jemand eine Idee, was da passiert ist?


#2

Hast du dir das mal durchgelesen?! :wink:


#3

die Aussage steht da aber auch schwarz auf weiß:

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.


#4

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 :frowning_face:


#5

Da stolpere ich auch immer wieder gerne drüber, aber oftmals hilft dann doch einfach mal wieder /tmp zu leeren… :wink:


#6

Ja, hatte ich gelesen, daraufhin hatte ich dann das Modul psExceptionHandler installiert, aber war vielelciht schon zu spät gestern :wink:


#7

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.


#8

vielleicht irgendwas in blocks eingebaut? oder einer CMS Seite im header/footer?


#9

Funktioniert es auch? Hast du mal direkt im Code gedebugged? Normalerweise muss, sofern das Modul richtig installiert ist, auch was angezeigt werden …


#10

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.


#11

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!