PHP 8.1 und Shop 5.7.16 die Zweite

Wie ist es möglich dass der Shop in der Testumgebung (mit StageWare) voll funktioniert unter PHP 8.1, der Live-Shop aber nicht. Verstehe ich echt nicht, die Testumgebung ist doch eine 1.1 Kopie des Live-Shop.
Was für einen Hinweis auf die Fehlerquelle ist das?
Besten Dank für Unterstützung

Fehlt da der Hinweis?

Besten Dank für deine Antwort, die ich jedoch nicht verstehe, welcher Hinweis?

Ehrlich gesagt verstehe ich diese Frage nicht. Bei der Problembeschreibung noch etwas vergessen? Hast du Fehlermeldung? Falls ja, welche?

Ich habe folgendes Problem: Shop 5.7.16 läuft nicht mit PHP 8.1 - folgende (untenstehende) Fehlermeldung erscheint wenn von PHP 7.4.3 auf PHP 8.1 umgestellt wird.
Ich habe eine Testumgebung (erstellt mit StageWare Erweiterung) auf dem gleichen Server, StageWare erstellt im Verzeichnis des Shop’s einen Ordner für die Testumgebung. Die Testumgebung wurde vom Live-Shop erstellt, ist also eine 1:1 Kopie.

Der Shop in der Testumgebung läuft unter PHP 8.1

Der Live-Shop läuft nicht unter PHP 8.1

Das verstehe ich nicht und ich muss herausfinden wieso das so ist. Wieso läuft der Shop nicht unter PHP 8.1 … PlugIns habe ich deaktiviert um herauszufinden ob ein PlugIn Probleme macht, das scheint es nicht zu sein.

Hier die Fehlermeldung:
Fatal error: Uncaught TypeError: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given in /home/nuggike1/www/nuggiketteli.ch/engine/Library/Enlight/Event/Handler/Plugin.php:148 Stack trace: #0 /home/nuggike1/www/nuggiketteli.ch/engine/Library/Enlight/Event/Handler/Plugin.php(148): method_exists(NULL, ‚onPreDispatch‘) #1 /home/nuggike1/www/nuggiketteli.ch/engine/Library/Enlight/Event/EventManager.php(207): Enlight_Event_Handler_Plugin->execute(Object(Enlight_Controller_EventArgs)) #2 /home/nuggike1/www/nuggiketteli.ch/engine/Library/Enlight/Controller/Front.php(211): Enlight_Event_EventManager->notify(‚Enlight_Control…‘, Object(Enlight_Controller_EventArgs)) #3 /home/nuggike1/www/nuggiketteli.ch/engine/Shopware/Kernel.php(197): Enlight_Controller_Front->dispatch() #4 /home/nuggike1/www/nuggiketteli.ch/vendor/symfony/http-kernel/HttpCache/SubRequestHandler.php(85): Shopware\Kernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #5 /home/nuggike1/www/nuggiketteli.ch/vendor/symfony/http-kernel/HttpCache/HttpCache.php(479): Symfony\Component\HttpKernel\HttpCache\SubRequestHandler::handle(Object(Shopware\Kernel), Object(Symfony\Component\HttpFoundation\Request), 1, true) #6 /home/nuggike1/www/nuggiketteli.ch/engine/Shopware/Components/HttpCache/AppCache.php(266): Symfony\Component\HttpKernel\HttpCache\HttpCache->forward(Object(Symfony\Component\HttpFoundation\Request), true, NULL) #7 /home/nuggike1/www/nuggiketteli.ch/vendor/symfony/http-kernel/HttpCache/HttpCache.php(452): Shopware\Components\HttpCache\AppCache->forward(Object(Symfony\Component\HttpFoundation\Request), true) #8 /home/nuggike1/www/nuggiketteli.ch/vendor/symfony/http-kernel/HttpCache/HttpCache.php(346): Symfony\Component\HttpKernel\HttpCache\HttpCache->fetch(Object(Symfony\Component\HttpFoundation\Request), true) #9 /home/nuggike1/www/nuggiketteli.ch/engine/Shopware/Components/HttpCache/AppCache.php(192): Symfony\Component\HttpKernel\HttpCache\HttpCache->lookup(Object(Symfony\Component\HttpFoundation\Request), true) #10 /home/nuggike1/www/nuggiketteli.ch/vendor/symfony/http-kernel/HttpCache/HttpCache.php(224): Shopware\Components\HttpCache\AppCache->lookup(Object(Symfony\Component\HttpFoundation\Request), true) #11 /home/nuggike1/www/nuggiketteli.ch/engine/Shopware/Components/HttpCache/AppCache.php(117): Symfony\Component\HttpKernel\HttpCache\HttpCache->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #12 /home/nuggike1/www/nuggiketteli.ch/shopware.php(122): Shopware\Components\HttpCache\AppCache->handle(Object(Symfony\Component\HttpFoundation\Request)) #13 {main} thrown in /home/nuggike1/www/nuggiketteli.ch/engine/Library/Enlight/Event/Handler/Plugin.php on line 148

Da scheinen Plugin nicht kompatibel zu sein oder es stehen Updates an.

Diese Fehlermeldung tauchte hier im Forum schon einmal auf. Auch im Zusammenhang mit PHP 8. Hier war es ein Plugin welches nicht PHP 8 kompatibel war.

Ich kenne dieses StageWare gar nicht. Ist dann die Testumgebung in einem normalen Unterverzeichnis? Falls ja, wie stellt du dann die unterschiedlichen PHP-Versionen ein?

Besten Dank für die Antworten.
Wenn es ein inkompatibles Plugin wäre, dann würde das in der Testumgebung ja auch nicht gehen.
Wie ich geschrieben habe, die Testumgebung liegt in einem Ordner des Live-Shop.
Die PHP Versionen stelle ich auf dem Server um.
Ich stelle den Server von PHP 7.4.3 auf PHP 8.1 → der Live-Shop bringt sofort beim Aufrufen der URL diese Fehlermeldung. Rufe ich die URL des Testshop/Testumgebung auf, alles funktioniert.

Das ist sehr seltsam. Sollte ein Plugin einen Fehler verursachen, müsste der Fehler auch auf der Testumgebung kommen. Nur mal so zum Test: Auf beiden Systemen mal KOMPLETT den Cache geleert und gestestet?

Bist du wirklich sicher, das die Staging-Umgebung ebenfalls mit PHP 8 läuft?
Ich hatte vor kurzem bei TimmeHosting sowas eingerichtet, damit ich die in einem Unterverzeichnis laufende Shopversion mit PHP 8 testen konnte während der Liveshop mit PHP 7 läuft.
Auch wenn Staging im Untervezeichnis läuft, kann man über ein Subdomain die PHP Version anders einstellen.
Hoffe, ich konnte das einigermaßen erklären. :wink:

1 „Gefällt mir“

Ich danke dir für deine Antwort.
Ja es ist so, der Shop in der Testumgebung läuft weiter auf PHP 7.4.3
Wie konnte ich vergessen das zu überprüfen … Überforderung :slight_smile:

Dann bleibt mir das grosse Problem, wieso läuft der Shop nicht mit PHP 8 (8.1)?

Kann jemand anhand der Fehlermeldung erkennen, was das Problem ist?

Ich habe die Plugins bereits mal deaktiviert um zu schauen welches das Problem machen könnte, aber da habe ich nichts feststellen können.
Mache es aber nochmals.

PHP-Error-Log könnte da Hinweise enthalten.

Besten Dank für deine Antwort. PHP Error Log finde ich wo, auf dem Server oder im Backend?

Hoster fragen. Solltest du auf dem Server irgendwo finden dann. Bei mir (ionos) musste ich es mit einer php.ini aktivieren.

Habe meinen Hoster mal angefragt.

Nun habe ich mal das Verzeichnis der Testumgebung/Testshop auf PHP 8.1 stellen können.
Ich habe alle Plugins deaktiviert.
Ruft man die URL auf → nuggiketteli.ch erscheint bei mir die Startseite, klickt man auf etwas, kommt die untenstehende Error-Meldung:

Wer kann damit was anfangen? Sagt die Fehlermeldung etwas darüber aus gemacht werden muss?

Fatal error : Uncaught TypeError: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given in /home/nuggike1/www/nuggiketteli.ch/testumgebung/engine/Library/Enlight/Event/Handler/Plugin.php:148 Stack trace: #0 /home/nuggike1/www/nuggiketteli.ch/testumgebung/engine/Library/Enlight/Event/Handler/Plugin.php(148): method_exists(NULL, ‚onPreDispatch‘) #1 /home/nuggike1/www/nuggiketteli.ch/testumgebung/engine/Library/Enlight/Event/EventManager.php(207): Enlight_Event_Handler_Plugin->execute(Object(Enlight_Controller_EventArgs)) #2 /home/nuggike1/www/nuggiketteli.ch/testumgebung/engine/Library/Enlight/Controller/Front.php(211): Enlight_Event_EventManager->notify(‚Enlight_Control…‘, Object(Enlight_Controller_EventArgs)) #3 /home/nuggike1/www/nuggiketteli.ch/testumgebung/engine/Shopware/Kernel.php(197): Enlight_Controller_Front->dispatch() #4 /home/nuggike1/www/nuggiketteli.ch/testumgebung/vendor/symfony/http-kernel/HttpCache/SubRequestHandler.php(85): Shopware\Kernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #5 /home/nuggike1/www/nuggiketteli.ch/testumgebung/vendor/symfony/http-kernel/HttpCache/HttpCache.php(479): Symfony\Component\HttpKernel\HttpCache\SubRequestHandler::handle(Object(Shopware\Kernel), Object(Symfony\Component\HttpFoundation\Request), 1, true) #6 /home/nuggike1/www/nuggiketteli.ch/testumgebung/engine/Shopware/Components/HttpCache/AppCache.php(266): Symfony\Component\HttpKernel\HttpCache\HttpCache->forward(Object(Symfony\Component\HttpFoundation\Request), true, NULL) #7 /home/nuggike1/www/nuggiketteli.ch/testumgebung/vendor/symfony/http-kernel/HttpCache/HttpCache.php(452): Shopware\Components\HttpCache\AppCache->forward(Object(Symfony\Component\HttpFoundation\Request), true) #8 /home/nuggike1/www/nuggiketteli.ch/testumgebung/vendor/symfony/http-kernel/HttpCache/HttpCache.php(346): Symfony\Component\HttpKernel\HttpCache\HttpCache->fetch(Object(Symfony\Component\HttpFoundation\Request), true) #9 /home/nuggike1/www/nuggiketteli.ch/testumgebung/engine/Shopware/Components/HttpCache/AppCache.php(192): Symfony\Component\HttpKernel\HttpCache\HttpCache->lookup(Object(Symfony\Component\HttpFoundation\Request), true) #10 /home/nuggike1/www/nuggiketteli.ch/testumgebung/vendor/symfony/http-kernel/HttpCache/HttpCache.php(224): Shopware\Components\HttpCache\AppCache->lookup(Object(Symfony\Component\HttpFoundation\Request), true) #11 /home/nuggike1/www/nuggiketteli.ch/testumgebung/engine/Shopware/Components/HttpCache/AppCache.php(117): Symfony\Component\HttpKernel\HttpCache\HttpCache->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #12 /home/nuggike1/www/nuggiketteli.ch/testumgebung/shopware.php(122): Shopware\Components\HttpCache\AppCache->handle(Object(Symfony\Component\HttpFoundation\Request)) #13 {main} thrown in /home/nuggike1/www/nuggiketteli.ch/testumgebung/engine/Library/Enlight/Event/Handler/Plugin.php on line 148

Hast Du mal das Original-Theme versucht ?

Besten Dank für deine Antwort, eben mal umgestellt, Fehlermeldung bleibt.

Hm, musst Du ansonsten evtl. debuggen, da die gepostete Fehlermeldung leider nicht sehr aussagekräftig ist. Komisch ist jedoch, dass bei Deiner Haupt-Domain als auch in der Testumgebung immer mal wieder der Wartungsmodus angezeigt wird, so als sei der Cache nicht sauber gelöscht.

Debugging:

Kann es sein, dass die config.php noch auf die alte Datenbank zeigt?

Das ist alles sehr komisch und kann ich von außerhalb nicht so wirklich nachvollziehen. Die Testumgebung sendet einen 503-Error zeigt aber die Seite ganz normal an. 503 würde bdeuten, dass ein Dienst nicht verfügbar ist. Woher das kommt müsste im Server Log (nicht Shopware Log) zu finden, sofern hier das Log auch korrekt funktioniert. Langsam vermute ich, dass es gar nicht an Shopware liegt.

Sind denn auch in der Datenbank die Shop mit ihre URL korrekt eingestellt? Wenn man einen Shop als Testumgebung in einem Unterverzeichnis anlegt (geht auch ohne dieser StageWare Erweiterung) muss man in die Grundeinstellungen der URL ggf. anpassen. Wurde das gemacht? Ist das korrekt eingestellt?