Nach Katastropen-Update "Slim Application Error"

Hallo,

ich habe heute endlich mal unseren Shop aktualisieren wollen. Das war leider eine Katastrophe. Gestartet habe ich das Update über das Backend. Ich muss gestehen, dass ich ewig (!) kein Updaten gemacht hatte. Als erstes hatte ich die PlugIns aktualisiert. Das war kein Problem und alle sind kompatibel. Dann habe ich erst einmal das Sicherheits-PlugIn installiert. Während des eigentlich Updates dann kam es zu sehr vielen DB-Fehlern (u.a. Constraint-Fehler, bereits vorhandene Felder und Tabellen etc. pp.).

Mein BackUp kann ich leider einspielen - es passiert nach dem Restore des Updates über das Admin-Panel beim Anbieter nichts. Das BackUp wird einfach nicht eingespielt. Bin sehr genervt… :frowning:

Als nun endlich der Aufräum-Schritt am Ende kam funktionierte am Ende natürlich nix. Wenn ich es richtig verstehe, dann fehlt die Daten „EventManager.php“, ja? Ich verstehe nicht was hier passiert ist. Wurde die nicht installiert? Wurde die gelöscht? Und woher bekomme ich die Datei nun und wie stelle ich sicher, dass nicht weiterer Content fehlt?


Slim Application Error
The application could not run because of the following error:

Details
Type: ErrorException
Code: 2
Message: include(/home/www/platzhalter/shopware/vendor/composer/…/doctrine/common/lib/Doctrine/Common/EventManager.php): failed to open stream: No such file or directory
File: /home/www/platzhalter/shopware/recovery/common/vendor/composer/ClassLoader.php
Line: 444
Trace
#0 /home/www/platzhalter/shopware/recovery/common/vendor/composer/ClassLoader.php(444): Slim\Slim::handleErrors(2, ‚include(/home/w…‘, ‚/home/www/www.h…‘, 444, Array)
#1 /home/www/platzhalter/shopware/recovery/common/vendor/composer/ClassLoader.php(444): include()
#2 /home/www/platzhalter/shopware/recovery/common/vendor/composer/ClassLoader.php(322): Composer\Autoload\includeFile(’/home/www/www.h…’)
#3 [internal function]: Composer\Autoload\ClassLoader->loadClass(‚Doctrine\Common…‘)
#4 /home/www/platzhalter/shopware/var/cache/production_201807181357/proxies/ShopwareProduction5a140fb84c882cd24b5f707539b37230d17a06d7ProjectContainer.php(3637): spl_autoload_call(‚Doctrine\Common…‘)
#5 /home/www/platzhalter/shopware/vendor/symfony/dependency-injection/Container.php(297): ShopwareProduction5a140fb84c882cd24b5f707539b37230d17a06d7ProjectContainer->getModelEventManagerService()
#6 /home/www/platzhalter/shopware/engine/Shopware/Components/DependencyInjection/Container.php(211): Symfony\Component\DependencyInjection\Container->get(‚model_event_man…‘, 1)
#7 /home/www/platzhalter/shopware/engine/Shopware/Components/DependencyInjection/Container.php(143): Shopware\Components\DependencyInjection\Container->doLoad(‚model_event_man…‘, 1)
#8 /home/www/platzhalter/shopware/var/cache/production_201807181357/proxies/ShopwareProduction5a140fb84c882cd24b5f707539b37230d17a06d7ProjectContainer.php(1019): Shopware\Components\DependencyInjection\Container->get(‚model_event_man…‘)
#9 /home/www/platzhalter/shopware/vendor/symfony/dependency-injection/Container.php(297): ShopwareProduction5a140fb84c882cd24b5f707539b37230d17a06d7ProjectContainer->getDbalConnectionService()
#10 /home/www/platzhalter/shopware/engine/Shopware/Components/DependencyInjection/Container.php(211): Symfony\Component\DependencyInjection\Container->get(‚dbal_connection‘, 1)
#11 /home/www/platzhalter/shopware/engine/Shopware/Components/DependencyInjection/Container.php(143): Shopware\Components\DependencyInjection\Container->doLoad(‚dbal_connection‘, 1)
#12 /home/www/platzhalter/shopware/var/cache/production_201807181357/proxies/ShopwareProduction5a140fb84c882cd24b5f707539b37230d17a06d7ProjectContainer.php(1936): Shopware\Components\DependencyInjection\Container->get(‚dbal_connection‘)
#13 /home/www/platzhalter/shopware/vendor/symfony/dependency-injection/Container.php(297): ShopwareProduction5a140fb84c882cd24b5f707539b37230d17a06d7ProjectContainer->getShopware_Plugin_ConfigReaderService()
#14 /home/www/platzhalter/shopware/engine/Shopware/Components/DependencyInjection/Container.php(211): Symfony\Component\DependencyInjection\Container->get(‚shopware.plugin…‘, 1)
#15 /home/www/platzhalter/shopware/engine/Shopware/Components/DependencyInjection/Container.php(143): Shopware\Components\DependencyInjection\Container->doLoad(‚shopware.plugin…‘, 1)
#16 /home/www/platzhalter/shopware/var/cache/production_201807181357/proxies/ShopwareProduction5a140fb84c882cd24b5f707539b37230d17a06d7ProjectContainer.php(1932): Shopware\Components\DependencyInjection\Container->get(‚shopware.plugin…‘)
#17 /home/www/platzhalter/shopware/vendor/symfony/dependency-injection/Container.php(297): ShopwareProduction5a140fb84c882cd24b5f707539b37230d17a06d7ProjectContainer->getShopware_Plugin_CachedConfigReaderService()
#18 /home/www/platzhalter/shopware/engine/Shopware/Components/DependencyInjection/Container.php(211): Symfony\Component\DependencyInjection\Container->get(‚shopware.plugin…‘, 1)
#19 /home/www/platzhalter/shopware/engine/Shopware/Components/DependencyInjection/Container.php(143): Shopware\Components\DependencyInjection\Container->doLoad(‚shopware.plugin…‘, 1)
#20 /home/www/platzhalter/shopware/var/cache/production_201807181357/proxies/ShopwareProduction5a140fb84c882cd24b5f707539b37230d17a06d7ProjectContainer.php(1185): Shopware\Components\DependencyInjection\Container->get(‚shopware.plugin…‘)
#21 /home/www/platzhalter/shopware/vendor/symfony/dependency-injection/Container.php(297): ShopwareProduction5a140fb84c882cd24b5f707539b37230d17a06d7ProjectContainer->getFroshProfiler_ConfigService()
#22 /home/www/platzhalter/shopware/engine/Shopware/Components/DependencyInjection/Container.php(211): Symfony\Component\DependencyInjection\Container->get(‚frosh_profiler…‘, 1)
#23 /home/www/platzhalter/shopware/engine/Shopware/Components/DependencyInjection/Container.php(143): Shopware\Components\DependencyInjection\Container->doLoad(‚frosh_profiler…‘, 1)
#24 /home/www/platzhalter/shopware/var/cache/production_201807181357/proxies/ShopwareProduction5a140fb84c882cd24b5f707539b37230d17a06d7ProjectContainer.php(1237): Shopware\Components\DependencyInjection\Container->get(‚frosh_profiler…‘)
#25 /home/www/platzhalter/shopware/vendor/symfony/dependency-injection/Container.php(297): ShopwareProduction5a140fb84c882cd24b5f707539b37230d17a06d7ProjectContainer->getFroshProfiler_Subscriber_VarDumpCollectorSubscriberService()
#26 /home/www/platzhalter/shopware/engine/Shopware/Components/DependencyInjection/Container.php(211): Symfony\Component\DependencyInjection\Container->get(‚frosh_profiler…‘, 1)
#27 /home/www/platzhalter/shopware/engine/Shopware/Components/DependencyInjection/Container.php(143): Shopware\Components\DependencyInjection\Container->doLoad(‚frosh_profiler…‘, 1)
#28 /home/www/platzhalter/shopware/engine/Shopware/Components/ContainerAwareEventManager.php(181): Shopware\Components\DependencyInjection\Container->get(‚frosh_profiler…‘)
#29 /home/www/platzhalter/shopware/engine/Shopware/Components/ContainerAwareEventManager.php(138): Shopware\Components\ContainerAwareEventManager->lazyLoad(‚enlight_bootstr…‘)
#30 /home/www/platzhalter/shopware/custom/plugins/FroshProfiler/Components/Event/EventManager.php(291): Shopware\Components\ContainerAwareEventManager->getListeners(‚enlight_bootstr…‘)
#31 /home/www/platzhalter/shopware/custom/plugins/FroshProfiler/Components/Event/EventManager.php(84): FroshProfiler\Components\Event\EventManager->parentNotify(‚Enlight_Bootstr…‘, Object(Enlight_Event_EventArgs))
#32 /home/www/platzhalter/shopware/engine/Shopware/Components/DependencyInjection/Container.php(219): FroshProfiler\Components\Event\EventManager->notify(‚Enlight_Bootstr…‘, Array)
#33 /home/www/platzhalter/shopware/engine/Shopware/Components/DependencyInjection/Container.php(143): Shopware\Components\DependencyInjection\Container->doLoad(‚models‘, 1)
#34 /home/www/platzhalter/shopware/recovery/update/src/DependencyInjection/Container.php(183): Shopware\Components\DependencyInjection\Container->get(‚models‘)
#35 /home/www/platzhalter/shopware/recovery/common/vendor/pimple/pimple/src/Pimple/Container.php(113): Shopware\Recovery\Update\DependencyInjection\Container->Shopware\Recovery\Update\DependencyInjection{closure}(Object(Pimple\Container))
#36 /home/www/platzhalter/shopware/recovery/update/src/DependencyInjection/Container.php(189): Pimple\Container->offsetGet(‚shopware.contai…‘)
#37 /home/www/platzhalter/shopware/recovery/common/vendor/pimple/pimple/src/Pimple/Container.php(113): Shopware\Recovery\Update\DependencyInjection\Container->Shopware\Recovery\Update\DependencyInjection{closure}(Object(Pimple\Container))
#38 /home/www/platzhalter/shopware/recovery/common/src/DependencyInjection/Container.php(80): Pimple\Container->offsetGet(‚shopware.theme_…‘)
#39 /home/www/platzhalter/shopware/recovery/update/src/app.php(169): Shopware\Recovery\Common\DependencyInjection\Container->get(‚shopware.theme_…‘)
#40 [internal function]: {closure}()
#41 /home/www/platzhalter/shopware/recovery/common/vendor/slim/slim/Slim/Route.php(462): call_user_func_array(Object(Closure), Array)
#42 /home/www/platzhalter/shopware/recovery/common/vendor/slim/slim/Slim/Slim.php(1326): Slim\Route->dispatch()
#43 /home/www/platzhalter/shopware/recovery/common/vendor/slim/slim/Slim/Middleware/Flash.php(85): Slim\Slim->call()
#44 /home/www/platzhalter/shopware/recovery/common/vendor/slim/slim/Slim/Middleware/MethodOverride.php(92): Slim\Middleware\Flash->call()
#45 /home/www/platzhalter/shopware/recovery/common/vendor/slim/slim/Slim/Middleware/PrettyExceptions.php(67): Slim\Middleware\MethodOverride->call()
#46 /home/www/platzhalter/shopware/recovery/common/vendor/slim/slim/Slim/Slim.php(1271): Slim\Middleware\PrettyExceptions->call()
#47 /home/www/platzhalter/shopware/recovery/update/index.php(56): Slim\Slim->run()
#48 {main}

Ich wäre Euch so dankbar, wenn Ihr mir helfen könntet eine Lösung zu finden!

Ich würde ich Dir raten, beim Anbieter anzurufen und ein Restore durchführen zu lassen, DB UND Shop, soferne Du nichts verlierst.

Die Fehlermeldungen etc. speichere vorher raus, also die LOG Dateien, etc.

Ich hatte gerade eine erleuchtende Erkenntnis: Das Einspielen des BackUps arbeitet kummulativ! Da ich DB und die gesicherten Verzeichnisse vor dem Einspielen nicht geleert hatte habe ich nun einen völlig inkonsistenten Datenstand.

Ich habe jetzt mal alles gelöscht und spiele das BackUp ein.

Ich habe nun auch die Hoffnung, dass es mit dem Update doch noch gut ausgehen könnte. Denn als ich dieses gestartet hatte kamen als erstes Problem die Constraint-Fehler. Eigentlich wollte ich da abbrechen und das BackUp einspielen. Das hatte nicht funktioniert - also hatte ich mich doch ans Beseitigen der Update-Fehler gemacht. Dummerweise hatte ich in dem Moment ja aber schon den oben beschriebenen inkonsistenten Datenstand.

Beim nächsten Versuch werde ich jetzt erstmal die Constraints-Fehler beseitigen (dafür gibt es ja zum download ein paar sql-statements). Mal sehen, ob die anderen gestrigen Fehler auch noch auftreten.

Viel Glück! Und wenn Du das Update machst, schrittweise…nicht zu viele Versionen überspringen und zwischenzeitlich immer wieder mal in Plesk / Webspace Backend ein volles Update machen.

Pass auch auf bei den Plugins, Paypal in v4. ist derzeit recht buggy, für 5.7 kam gerade ein Update, was auch noch neu ist. Ich habe 5.6.10, da läuft alles, keine vollen Log Files.

1 „Gefällt mir“

Herzlichen Dank :slight_smile:

Jetzt lade ich gerade erstmal die BackUp-Datei wieder hoch… 20GB eine Stunde - gerade noch erträglich!
Der Ordner in den man das BackUp zum Einspielen einstellen muss ist ein Unterordner von dem Ordner der mit dem BackUp gesichert wird… beim Leeren hätte ich den mal nicht mitlöschen sollen hust… Nun ja… ein paar Käffchen halt.

Hmm, blöde Frage, aber der Anbieter müsste doch ein Backup haben, lokal vorliegen, oder ist das zu alt?

Das ist aus der Nacht und da fehlen ne ganze Menge Artikel, die gestern eingepflegt wurden und einige Bestellungen. Und das Einspielen kostet 29,-. Das ist die Notlösung für heute Nachmittag, sollte der Shop nicht wenigstens in dem Status sein von kurz vorm Update.

Ich empfehle wirklich solche Aufgaben direkt auf der Konsole zu machen (vorher üben). Ein MySQL-Backup dauert je nach Größe der Datenbank dann nur Sekunden bis Minuten, ebenso das Zurückspielen.
Genauso kann man den ganzen Inhalt des Shopordners in wenigen Minuten in ein Archiv packen.
Beide Archiv-Dateien lassen sich auch in wenigen Minuten runter- und wieder hoch laden.
Das Lernen dieser Arbeiten dauert jedenfalls nicht mal die Stunde, die ihr mit dem momentanen Vorgehen verliert.
Zudem ist es einfach nützlich das Vorgehen vorher an einer Testinstallation zu üben. Wenn dann was schief läuft, kann man in Ruhe die Ursachen heraus finden und Probleme klären. Das kostet weniger Zeit, Geld und Nerven, als wenn der Live-Shop für Stunden nicht funktioniert.

1 „Gefällt mir“

Hi,

ich habe erstmal eine Pause eingelegt - der Shop sollte am Wochende nicht offline gehen.

Also das BackUp vom Shop-Verzeichnis per tar über SSH ist immer abgebrochen. Das hat nur geklappt, wenn ich den Media-Ordner rausgelassen habe. Das sind ca. 20GB. Entsprechend ist das leider keinesfalls eine Angelegenheit von wenigen Minuten das runter- und hochladen. Auch mit 100/50MBit Anschluss nicht.

Wie man das BackUp von der DB über SSH macht weiß ich ehrlich gesagt gar nicht und da stimme ich Dir zu - da ist Üben eine super Sache! :smiley:

Allerdings muss ich sagen, dass die BackUp Funktion vom Provider natürlich schon toll ist, da äußerst einfach und schnell bedienbar! Wenn man sich nicht so dumm anstellt wie ich und nicht darauf kommt, dass man beim Wiedereinspielen vorher alles löschen muss.

Eine Testinstallation hätte ich ebenso gerne wie ein Staging. Aber ich finde das gar nicht so einfach das mal eben zu realisieren, wenn man sich mit der Thematik noch gar nicht auseinander gesetzt hat. Alleine schon das Thema lokale Installation ist ein Thema für sich.

Aber ich möchte nicht zu weit abdriften und befasse mich mit den von Dir angesprochenen Themen gesondert.

Wenn ich das Update wieder durchstarte berichte ich hier von den Fehlern auf die ich gestoßen bin und vielleicht klappt es ja mit dem Update letztendlich. Dann war das Hauptproblem möglicherweise tatsächlich der inkonsistente Zustand (siehe mein zweiter Beitrag oben).

wenn Du Plesk hast im Backend von Deinem Provider, dann ja, geht es wirklich einfach. DB und Verzeichnisse sind auf Knopfdruck gepackt und auch auch fremde FTP Server verteilt.

Pass noch bei dem neuen Sicherheitsupdate auf, ich musste die letzten 2 Updates auf Nein stellen wegen den Token.