nach der Umstellung auf php8 bekomme ich unter Einstellungen > Cache/Performance im Fenster bei Klick auf den Reiter „Cache“ nichts mehr angezeigt, es kommt ein Fehler-Fenster ohne Inhaltstext mit der Titelzeile "500 - "
Ich habe diesen in meinem Hosting deaktiviert, der Fehler verschwindet und das Cache-Fenster zeigt wieder informationen an. Nun würde ich aber gerne aus Performance-Gründen den OPCache reaktiveren.
Im Thema heißt es dann, Zitat: „die Funktion opcache_get_status ist da standardmässig aus Sicherheitsgründen deaktiviert, da andernfalls im Shared Hosting der OPCache von anderen Kunden ausgelesen werden könnte.“ sowie „sieht so aus, als ob du die OPcache PHP Extension nicht korrekt installiert/konfiguriert hast für die PHP Version, die du gerade im Einsatz hast. Hier wird geschaut, ob die Extension aktiv, aber danach wir die Function nicht gefunden. Da solltest du mal mit deinem Hoster sprechen.“
Das habe ich getan, dieser sagt mir, das ich in meinem Paket nichts ändern kann in Bezug auf den OPCache-Status.
Nun tritt der Fehler ja erst seit php8 auf. Unter php 7.4 mit aktivem OPCache gibts den Fehler nicht.
Wer kann mir sagen, ob ich in Shopware etwas umstellen oder etwas in einer Datei ändern kann, das er trotz OPCache (der ebenso konfiguriert ist wie in 7.4) keinen Fehler mehr ausgibt und mir den Inhalt vom Cache-Fenster wieder anzeigt?
Bedeutet das, wenn man nur Shared Hosting verwendet, kann man den Fehler nicht beheben? Oder gibt es eine Möglichkeit, dem Shop das irgendwie „vorzutäuschen“ damit er den Inhalt vom Cache-Fenster anzeigt?
Einen kleinen Bug bringt das scheinbar noch mit sich - klicke ich im Cache-Fenster unten unter „Welche Bereiche sollen geleert werden?“ alles an, und dann auf „Leeren“ - so kam sonst das Fenster „Theme Kompilierung“ - das erscheint jetzt nicht mehr. Die Themes muss ich dann also separat kompilieren, wenn ich den Button klicke?
Ich müsste meinen Hoster also bitten, den „opcache_get_status“ zu aktivieren?
(Der wechsel vom Shared Hosting zum Server steht zwar an, wird aber vermutlich erst mit dem Wechsel auf Shopware 6 erfolgen - und das wird noch ein wenig dauern.)
Danke dir - der Hoster nimmt es ernst, sie schalten es nicht für mich frei (hatte ich aber auch nicht mehr erwartet nach dem lesen der Infos vom Thread).
Gäbe es eine Möglichkeit, was bei Drupal im Link disktuiert wird, selbst umzusetzen? Oder ist das eine Core-Sache, welche nur Shopware selbst machen kann?
@SmartStylez: Würdest du die Info teilen, wie du das umgesetzt hast?
@Michael_Telgmann: Gibt es Hoffnung, das ihr diesen Bug in Shopware 5 noch behebt, damit es wirklich für alle mit php8 ohne Einschränkungen kompatibel ist? Es scheint ja einige zu geben, die dieses Problem in Verbindung mit Shared Hosting haben.
@Michael_Telgmann: Ich habe soeben ein Ticket im Issuetracker erstellt und den Fehler beschrieben sowie zwei Screenshots angefügt (Fehlerbeschreibung bzw. die Art, wie ich das umgesetzt habe, ginge sicher professioneller - aber ich hoffe, das hilft euch trotzdem!)
Sehr gerne. Hat es denn geklappt? Ich habe die Lösung auch deinem Ticket im Issuetracker hinzugefügt, damit es in ein zukünftiges Release mit einfließen kann.
Sorry, ich konnte es leider erst jetzt testen. Erst hat es nicht funktioniert, dann habe ich es aber hinbekommen. Danke, das du den Issuetracker erweitert hast und danke @Michael_Telgmann das ihr das für Version 5.7.18 aufgenommen habt!
Damit es funktioniert habe ich den Code angepasst (es waren nur Zeichen zu ändern, lag vermutlich am einkopieren hier im Forum):
if (\function_exists('opcache_invalidate')) {} else {
Ich habe das \ vor „function_exists“ ergänzen sowie ‚ und ‘ bei „opcache_invalidate“ gegen ' ersetzt - dann hat es funktioniert.
Was jetzt funktioniert - die Fehlermeldung ist verschwunden, der Inhalt im Bereich „Cache-Verzeichnis Informationen“ wird nun wieder angezeigt. Was aber immer noch nicht geht (das bringt uns vermutlich erst die Core-Anpassung in Shopware 5.7.18 wieder) ist, wenn man unter „Welche Bereiche sollen geleert werden“ die einzelnen Punkte anklickt und anschließend auf „Leeren“ klickt, so wird der Cache zwar geleert, aber das Fenster zum „Themes kompilieren“ erscheint weiterhin nicht mehr.
Wenn ich wieder die Ursprungs-Datei CacheManager.php ohne Änderungen einspiele, dann kommt die Fehlermeldung. Klicke ich bei „Welche Bereiche sollen geleert werden?“ alles an und dann auf „Leeren“ passiert nichts. Klicke ich nur die Punkte „Template-Cache“ und „Themes kompilieren“ an und dann auf „Leeren“ kommt das Fenster zum Themes-Kompilieren zusammen mit der Fehlermeldung „500 -“ ohne Inhalt.
Passe ich die Datei wie von dir beschrieben wieder an, ähnliches verhalten - aber ohne die Fehlermeldung. Die ist dann weg und auch der Bereich „Cache-Verzeichnis Informationen“ zeigt wieder etwas an (so wie gewünscht).
Klicke ich dann wieder alle Punkte unten an und gehe auf „Leeren“, dann kommt kurz das Fensterchen „Cache wird geleert“ und sonst nichts weiter. Auch die Info oben rechts „Cache geleert“ erscheint nicht. Der Cache wird aber geleert, was man beim Klick auf „Neu laden“ an den Werten sieht. Außer vom Template/Theme, da ändert sich nichts am Wert.
Klicke ich dann nun auch hier wieder nur die zwei Punkte Template und Theme an, dann kommt das Theme-Kompilieren-Fenster (das funktioniert auch und läuft durch, der Wert beim Template-Cache ändert sich) und oben rechts auch die Info für „Cache geleert“ wird angezeigt.
Das Kompilieren der Themes funktioniert daher auch bei mir, aber nur, wenn ich nur die zwei genannten Punkte anklicke. Das Verhalten besteht aber auch mit der ungeänderten CacheManager.php und erst seit php8, denn mit 7.4 war das noch nicht so.
Seltsame Sache. Ich nutze ein eigenes Theme als Ableitung vom Standard-Theme (wie im Tutorial beschrieben) mit ein paar Farbänderungen (Header, Footer und z.B. ausgeblentem Gutschein-Feld im Warenkorb). Mehr eigentlich nicht. Ich habe es in zwei verschiedenen Shops gestetet (5.7.15 und 5.7.17) - bei beiden geht es nicht, solange ich alle Punkte anklicke - aber erst seit der Umstellung von php 7.4 auf 8.