composer Installation mit Shopware 5.4

Hallo Shopware,
hallo Community,

wir betreiben mehrere Shopware-Instanzen für unsere Kunden. Seit Version 5.4 nutzen wir nun verstärkt auch composer. Zunächst einmal vielen Dank für dieses Feature. Darauf haben wir seit längerem gewartet.

Insgesamt sind wir jedoch noch auf verschiedene Probleme gestoßen.

Als Basis nutzen wir das composer-Skeleton: https://github.com/shopware/composer-project
Mit einem

composer create-project shopware/composer-project . --no-interaction –stability=dev

und anschließendem

./app/install.sh

ist die Installation sehr schnell gemacht. Sehr gut!

1.) .env
Das .env File ist momentan direkt im Shopware-Root abgelegt. Hier haben wir uns zunächst damit beholfen, dass wir in der .htaccess den Zugriff auf das File verbieten.

    Order allow,deny
    Deny from all

Wie ist hier die best practice?

Eine generelle Frage dazu kam auf: wäre es nicht sinnvoll, Files, die nicht zugänglich sein sollen, bereits in der Default-Konfiguration, eine Ebene nach unten zu schieben und alle Assets, die im Frontend benötigt werden, bspw in einen Ordner /htdocs/ (oder /web/) zu verschieben.?

|- app
|- bin
|- vendor
|- .env
|- …
|- htdocs
| |- files
| |- media
| |- theme

In ähnlicher Weise wird es bspw. in TYPO3 gehandhabt (https://github.com/TYPO3/CmsComposerInstallers).
Aber das nur am Rande.

2.)  Versions- und Revisionsnummer
Auffällig ist außerdem, dass Versions- und Revisionsnummer nicht überall zugänglich sind.
Während im Shopware-Backend Version und Revision aus .env File genutzt und angezeigt werden, ist dies auf der CLI nicht der Fall.

Backend:

Shopware 5.4.2 dev (Rev. 201804030942) - Backend (c) shopware AG
dev@dev:~/project54.de/web/bin$ ./console
Shopware version ___VERSION___ - /dev

Hier ist ebenfalls auffällig, dass im Cache-Ordner die Shopware-Revision nicht mehr angehangen ist. Aus Shopware 5.3 und früher kennen wir das anders. Ist das ein Konfigurationsfehler auf unserer Seite?

dev@dev:~/project54.de/web/var/cache$ ls
clear_cache.sh dev
dev@dev:~/project53.de/web/shop/var/cache$ ls
clear_cache.sh dev_201801171346

3.) Feedback-Fenster deaktivieren
Gibt es außerdem eine Möglichkeit das Fenster im Backend „Feedback für Vorabversion“ zu deaktivieren? Das Fenster erscheint mit jeder installierten Shopware 5.4 Version (also auch mit 5.4.2) und in jedem Kontext (dev und production). Hängt dies mit der nicht verfügbaren Version/Revision zusammen?

4.) composer und ionCube
Auch wenn es sich um eine Composer-Installation handelt, wollen wir unseren Kunden natürlich nicht die Möglichkeit nehmen Plugins über das Backend zu installieren. Nachdem ein Kunde vor kurzem ein verschlüsseltes Kauf-Plugin installiert hatte, war der Plugin-Manager nicht mehr verfügbar und folgende Fehlermeldung wurde angezeigt:
Uncaught Error: Class ‘ComposerAutoloaderInitShopware’ not found in
/xx/Plugins/Community/Frontend/xyz/Bootstrap.php:2548  […]
Nicht mehr verfügbar heißt, die Plugin-Liste wurde als komplett leer angezeigt. Nach dem Entfernen des verschlüsselten Plugins konnte der Plugin-Manager wieder benutzt werden.

Besten Dank für eure Hilfe

Hi @portrino‍ konntest du selbstständig hier schon Infos rausziehen? Hat sich ja bis dato keiner gemeldet.

Habe gesehen das in der 5.4.3 nun auch .env file downloads restricted wurden.

Hallo Misengo,

bisher leider nicht.

Zu 1.) wurde hier beschrieben, dass es zuviele statische Abhängigkeiten gibt und die Dateien nicht ohne weiteres außerhalb des docroot verschoben werden können.
https://forum.shopware.com/discussion/comment/215304/#Comment_215304

Bzgl. der Versionsnummer gab es hier aber auch einen Commit: Merge pull request #26 in SW/composer-project from sanitize-version t… · shopware/composer-project@5ab6ed1 · GitHub

Das sollte dann direkt aus der composer.json genommen werden.

Vielen Dank für den Hinweis auf den Commit! Das hat mir weitergeholfen.

Dass die Revisionsnummer an den Cache-Ordner angehangen wird, wurde ebenfalls gefixt:
Shopware Issuetracker

Ich hab ein weiteres Problem mit der Composer Installation.

Ich habe im Zuge einer Erweiterung für die CustomerStreams ein Plugin geschrieben. Hier wird bei Überprüfung der Conditions die Klasse der aufzurufenden Condition überprüft über die Funktion

 @see \Shopware\Components\ReflectionHelper::verifyClass()

Diese kontrolliert unter anderem, ob die auszuführende Klasse im Hauptverzeichnis des Shops liegt. Beim Composer Projekt schlägt diese Abfrage fehl, da die Condition in dem Plugin-Ordner liegt und das Hauptverzeichnis als “vendor/shopware/shopware” gesetzt wird.

Hier wäre es schön wenn ein Weg implementiert wird, sodass die Klasse auch in Composer Projekten verfiziert wird.