Nach PHP Update Fehler 400

Hallo Zusammen,

Wir wollten gerade unseren Shop auf PHP 7.2 Updaten.

Das Frontend kann normal aufgerufen werden.

Beim Backend Login kommt aber dieser Fehler:

The provided CSRF-Token is invalid. If you're sure that the request to path "/backend/Login?file=app&no-cache=1567965456" should be valid, the called controller action needs to be whitelisted using the CSRFWhitelistAware interface. in engine/Shopware/Components/CSRFTokenValidator.php on line 106
Stack trace:

#0 engine/Library/Enlight/Event/Handler/Default.php(91): Shopware\Components\CSRFTokenValidator->checkBackendTokenValidation(Object(Enlight_Controller_ActionEventArgs))
#1 engine/Library/Enlight/Event/EventManager.php(219): Enlight_Event_Handler_Default->execute(Object(Enlight_Controller_ActionEventArgs))
#2 engine/Library/Enlight/Controller/Action.php(175): Enlight_Event_EventManager->notify('Enlight_Control...', Object(Enlight_Controller_ActionEventArgs))
#3 engine/Library/Enlight/Controller/Dispatcher/Default.php(563): Enlight_Controller_Action->dispatch('indexAction')
#4 engine/Library/Enlight/Controller/Front.php(222): Enlight_Controller_Dispatcher_Default->dispatch(Object(Enlight_Controller_Request_RequestHttp), Object(Enlight_Controller_Response_ResponseHttp))
#5 engine/Shopware/Kernel.php(202): Enlight_Controller_Front->dispatch()
#6 vendor/symfony/http-kernel/HttpCache/SubRequestHandler.php(102): Shopware\Kernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#7 vendor/symfony/http-kernel/HttpCache/HttpCache.php(448): Symfony\Component\HttpKernel\HttpCache\SubRequestHandler::handle(Object(Shopware\Kernel), Object(Symfony\Component\HttpFoundation\Request), 1, true)
#8 engine/Shopware/Components/HttpCache/AppCache.php(260): Symfony\Component\HttpKernel\HttpCache\HttpCache->forward(Object(Symfony\Component\HttpFoundation\Request), true, NULL)
#9 vendor/symfony/http-kernel/HttpCache/HttpCache.php(238): Shopware\Components\HttpCache\AppCache->forward(Object(Symfony\Component\HttpFoundation\Request), true)
#10 engine/Shopware/Components/HttpCache/AppCache.php(105): Symfony\Component\HttpKernel\HttpCache\HttpCache->pass(Object(Symfony\Component\HttpFoundation\Request), true)
#11 shopware.php(122): Shopware\Components\HttpCache\AppCache->handle(Object(Symfony\Component\HttpFoundation\Request))
#12 {main}

Hat jemand eine Ahnung woran das liegt?

 

Beste Grüße

Quasi

Das ist entweder nicht der richtige Fehler oder Browsercache löschen reicht.

Hallo, habe leider genau das gleiche Problem. SW 5.5.10 - PHP von 7.1 auf 7.2 mit identischer Fehlermeldung.

Browsercache gelöscht, per FTP den Inhalt von cache/production…/templates/backend… sowie den Inhalt von doctrine/attributes&proxies gelöscht, Auch zum Test einfach mal den ganzen “production” Ordner umbenannt. Hat leider alles nichts gebracht. Wieder zurück auf 7.1 blieb die Meldung so lange, bis ich per FTP den Inhalt von var/cache/production…/templates/backend gelöscht hatte. 

Was könnte noch helfen bzw. wo dran könnte es noch liegen? 

Vielen Dank für Eure Hilfe
 

Wie oben beschrieben den Browsercache (mit Cookies!) gelöscht? Bzw. mal einen anderen Browser getestet?
Die Meldung sagt nur, der Token ist falsch, dass kann natürlich bei PHP-Wechsel durchaus sein.

Hallo,

Danke für die Antworten.

Leider hilft es nicht, ich habe jetzt mehrere Geräte und Browser getestet, Browser Cache und Cookies gelöscht.

Problem besteht aber weiter.

Kann es nooch an etwas anderen liegen?

Beste Grüße

Quasi

 

Ja, aber dann wird der Fehler auch ein anderer sein.

Wenn es nur an der PHP-Umstellung liegt, sollte man das ja durch zurückstellen wieder beheben können. Wenn es dann so bleibt, ist die Ursache auch eher etwas anderes gewesen.

Wir haben nun so einiges versucht:

Auf PHP 7.2 haben wir alle Cashes gelöscht und CSRF deaktiviert.

Die Fehlermeldung kommt dann nicht mehr aber dann hängen wir in einer Anmeldeschleife (nach jeder Anmeldung öffnet sich das Anmelde-Fenster erneut).

Also keine Lösung.

Wenn wir zurück auf PHP 7.1. gehen, läuf alles wieder normal mit und ohne CSRF.

 

 

 

 

Es könnte an den PHP-Settings liegen: 

Einmal die PHP Einstellung session.gc_maxlifetime überprüfen. Die darf nicht 0, aber auch nicht dem PHP Max Int entsprechen (9223372036854775807), am Besten einfach einen normalen Wert irgendwo zwischen 7200 und 9000000000000000000

Hm, bei mir steht dort unter Local Value die Zahl 2147483647 und unter Master Value 1440.

Schadet ja nichtm dass testweise mal zurück auf den Master Value zu setzen.

Ok, in der PHP.INI meines Anbieters (DomainFactory) kann ich bei  session.gc_maxlifetime nur einen Wert eintragen. Da dieser auf 1440 steht, gehe ich davon aus dass es der Master Value Wert ist. Du sagtest der sollte zwischen 7200 und 9000000000000000000 sein? Währe 1440 dann nicht zu klein?

Die von mir oben genannten Werte hatte ich aus der PHP-Info übersicht bei Shopware.

An opcache und/oder apcu kann es aber nicht liegen oder? Ich hatte mir das nachträglich von DF aktivieren lassen.
Auszug aus der PHP.INI
 

[Session]
  session.serialize_handler = "php"
  session.gc_probability = 1
  session.referer_check = 
  session.entropy_length = 0
  session.entropy_file = 
  session.cache_limiter = "nocache"
  session.cache_expire = 180
  session.use_trans_sid = 1
  url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
  extension = "/usr/local/lib/php_modules/7-71STABLE/apcu.so"
  zend_extension = "/usr/local/lib/php_modules/7-71STABLE/opcache.so"
  opcache validate_root = 1
  opcache.revalidate_path = 0

Für den wechsel auf 7.2 hatte ich 7-71STABLE auf 7-72STABLE in beiden Zeilen geändert. Ist da eventuell noch etwas zu ändern?

@Quasi: Bei welchem Anbieter seid ihr denn? Evtl liegt es ja am Anbieter …

Hallo,

Wir sind bei Timme Hosting.

Bei uns in der Info steht:

Local Value: 9223372036854775807  und Master Value 1440.

Wo finde ich denn die PHP INI um das zu ändern?

Ich weiß nicht, wie es bei Timme Hosting ist. Bei DF hat man im Kundenkonto “PHP-Einstellungen” wo man die PHP Version und INI bearbeiten kann. Kannst ja beim bei Dir gucken.

Hat schon jemand eine Lösung für das Problem gefunden?

Naja, es scheint ja was mit der PHP-Version zu tun zu haben.

Gerne mal eine “kaputte” Testumgebung reinschicken, dann werf ich mal einen Blick drauf: forum@shopware.com

Danke für Dein Angebot Moritz, leider ist es mir nicht möglich eine Testumgebung für dieses Problem zu machen. Die PHP-Version ist leider für die komplette URL. Wenn ich also im Unterordner eine Testumgebung anlege und die PHP-Version umstelle, ist diese auch für den Live-Shop aktiv. 

Hallo Zusammen,

wir haben das selbe Problem mit einer Shopware 5.5.10 Installation. Mit PHP 7.1 ist alles prima, unter 7.2 kommt die CSFR Fehlermeldung, die den Login ins Backend verweigert, unabhängig vom Deaktivieren über die config.php und Cache leeren (Shop + Browser samt Cookies). Der Kunde hat den Shop bei Strato, eine Kopie bei uns erzeugt den selben Fehler, an der PHP Version scheint es daher eher nicht zu liegen. Plugins habe ich ebenfalls getestet, ist nicht die Ursache (alle zusätzlichen Plugins sind aktuell inaktiv).

@ Moritz Naczenski Darf ich Dir einmal Zugangsdaten zusenden? Vielleicht findet Ihr das Problem. Ist eine reine Testumgebung, Ihr könntet also frei schalten und walten.

@WOLLkenSchaf‍ Du kannst mir gern die Testumgebung zukommen lassen wenn Du magst, dann lade ich die bei uns mit hoch und schicke Dir dann Zugangsdaten zu, damit der Shopware Support da vielleicht auch einmal drüberschauen kann.

Liebe Grüße,

Nico

@dmsolutions‍ Vielen Dank für Dein Angebot. Ich warte erstmal ab, ob Moritz bei Dir was findet. Wenn ich viel Glück habe, kann ich dadurch auch mein Problem lösen.  Ansonsten komme ich gern auf Dein Angebot zurück.  Smile 

 

Klar, schick rüber.

Ich habe mir das nun einmal angesehen. Es lag an der Einstellung “PHP Timeout” unter Einstellungen > Grundeinstellungen > System > Backend. Das scheint sich mit der neuen PHP-version nicht zu vertragen, da jede Session mit einer Laufzeit “0” angelegt wird. Wenn man diese Einstellung auf einen anderen Wert (Standard 2 Stunden) änder, dann funktioniert auch das Backend wieder. 

Ist im Prinzip das, was wir oben auch vermutet haben, nur dass man die Einstellung von PHP in Shopware auch nochmal überschreiben kann.

2 „Gefällt mir“