Nach einem Shopware-6-Update zeigt die Administration unter Erweiterungen → Meine Erweiterungen plötzlich keine Apps und keine Themes mehr an, die Liste bleibt komplett leer. Das Deaktivieren einzelner Apps ändert nichts. In den meisten Fällen ist keine App defekt oder inkompatibel, sondern ein Server-Konfigurationsproblem verhindert, dass Shopware die Erweiterungsliste überhaupt laden kann.
Symptom
- Die Seite „Meine Erweiterungen“ ist leer (weder Apps noch Themes).
- Auch deaktivierte Apps verschwinden aus der Liste.
- In der Browser-Konsole erscheint ein
AxiosErrormitRequest failed with status code 500. - Über die CLI (
bin/console plugin:list) funktioniert alles, nur der Admin im Browser nicht.
Ursache
Beim Öffnen der Erweiterungsseite ruft die Administration intern refreshExtensions auf. Shopware nutzt dabei Composer, um die installierten Plugins zu ermitteln. Composer möchte dafür seine globale Konfiguration lesen, und genau hier scheitert es:
Warning: is_file(): open_basedir restriction in effect.
File(/usr/local/bin/composer/config.json) is not within
the allowed path(s): (/var/www/vhosts/example.de/:/tmp/)
Zwei Dinge greifen ineinander:
- Die Umgebungsvariable
COMPOSER_HOMEzeigt auf ein Verzeichnis außerhalb des Webspace (z. B./usr/local/bin/composer). - Die PHP-Direktive
open_basedir(typisch bei Plesk-Hosting) erlaubt PHP nur den Zugriff auf den Vhost-Pfad und/tmp. Der Composer-Pfad ist gesperrt → Fatal Error → HTTP 500.
Auf der CLI tritt der Fehler nicht auf, weil dort meist kein open_basedir greift. Betroffen ist nur der Web-/PHP-FPM-Kontext.
Diagnose
Den echten Fehler liefert die Server-Antwort, nicht die Browser-Konsole:
- DevTools öffnen (
F12) → Tab Network → Seite „Meine Erweiterungen“ neu laden. - Den rot markierten Request mit Status
500anklicken → Tab Response. Im JSON untererrors[0].detailsteht die echte Fehlermeldung. - Alternativ im Server-Log:
tail -n 150 var/log/prod.log(bzw.dev.log).
Steht dort eine open_basedir restriction-Meldung mit einem composer-Pfad, trifft diese Anleitung zu.
Lösung
Es gibt zwei saubere Wege, einer genügt.
Option A (empfohlen): COMPOSER_HOME in einen erlaubten Pfad legen
COMPOSER_HOME auf ein beschreibbares Verzeichnis innerhalb des Vhosts setzen:
mkdir -p /var/www/vhosts/example.de/example.de/var/composer
Diesen Wert dann im PHP-FPM-Kontext verfügbar machen. Bei Plesk über Websites & Domains → Domain → PHP-Einstellungen → Zusätzliche Konfigurationsanweisungen:
env[COMPOSER_HOME] = /var/www/vhosts/example.de/example.de/var/composer
Vorher prüfen, woher der falsche Wert kommt, damit er nicht überschreibt:
grep -rn COMPOSER_HOME /etc/environment /etc/php* 2>/dev/null
Vorteil: behebt die eigentliche Fehlkonfiguration, statt sie nur zu umgehen.
Option B (schnell): open_basedir erweitern
In denselben PHP-Einstellungen den Parameter open_basedir um den Composer-Pfad ergänzen (bestehende Pfade beibehalten):
/var/www/vhosts/example.de/:/tmp/:/usr/local/bin/composer/
Nachteil: PHP darf dann auch außerhalb des Webspace lesen. Dafür funktioniert es sofort und ohne neues Verzeichnis.
Abschluss
Nach der Änderung:
bin/console cache:clear
PHP-FPM neu laden (Plesk macht das beim Speichern der PHP-Einstellungen meist automatisch), dann den Admin neu laden. Die Erweiterungsseite lädt wieder, alle Apps und Themes erscheinen.
Du kommst nicht weiter oder brauchst Unterstützung bei deinem Shopware-Projekt? Zum Support oder service@shopmeister.org.