ich würde gerne eine zweite Shopware 6 Instanz in einem Unterverzeichnis von meiner Hauptinstanz aufsetzen.
Also sozusagen http://meinshop.de und der zweite Shop soll dann unter http://meinshop.de/test erreichbar sein.
Nun muss der Webserver ja so eingestellt sein, dass der DocumentRoot auf den public-Ordner der Shopware 6 files zeigt.
Entsprechend habe ich im public-Ordner einen weiteren Ordner test angelegt und dort einfach die Shopware 6 files entpackt.
Ich kann den Shop aber nun nur mit http://meinshop.de/test/public aufrufen.
Gibt es eine Möglichkeit den zweiten Shop nur über http://meinshop.de/test aufzurufen?
Wenn ich http://meinshop.de/test aufrufe, denkt das Shopware 6 aus meiner Hauptinstanz, es handelt sich um eine Route und gibt mir eine Fehlermeldung, dass er die Route /test nicht finden kann. "No route found for „GET /staging/“
Ich habe es mit einer .htaccess im test-Ordner probiert, die einfach auf den public-Ordner weiterleiten soll.
RewriteEngine On
RewriteRule ^$ /public [L]
Das hat aber nicht so geklappt.
Außerdem bin ich mir unschlüssig, was ich im SalesChannel als Domain eintragen muss.
Derzeitig ist dort http://meinshop.de/test/public eingetragen.
Also Ziel ist eigentlich einfach eine zweite Installation in einem Unterverzeichnis, ohne diese immer mit /public noch aufrufen zu müssen.
Ziel ist die Einrichtung eines Testshops in einem Unterverzeichnis.
Konkret auch die Frage, an welchen Stellen bspw. die Datenbank-Verbindung angepasst werden muss. Reicht hier die Änderung der Verbindungsdaten in der .env Datei? Oder muss diese noch an weiterer Stelle angepasst werden?
So ganz werde ich noch nicht aus der Ordnerstruktur schlau.
Ich habe also einen Staging Shop bpsw. unter /public/ staging
Wo genau muss nun der private Ordner liegen und vor allem wo muss die neue .env Datei liegen? Vom Hauptverzeichnis aus gesehen:
unter /private oder
unter /public/staging/private oder
unter /private/staging
reicht es für den Testshop aus, die DATABASE_URL in der .env Datei anzupassen?
Deine Lösung ist bestimmt eine gute, nur ist die Doku noch etwas schwammig
Ebenfalls schreibst du auf GitHub, dass die beiden Shops die gleichen Dateien aber unterschiedliche Datenbanken nutzen. Wie kriegt man es hin, dass auch ein anderes zweites Dateiverzeichnis für den staging Shop genutz wird? Hast du dafür auch schon eine Lösung?
Ich bedanke mich schon mal und freue mich auf eine Antwort!
Also ich bin jetzt stumpf die Anleitung durchgegangen. Die Kopie der .env habe ich in den private Ordner von meinem staging Ordner gelegt (also public/staging/private).
In der .env habe ich entsprechend den Datenbanknamen der neuen Datenbank angegeben.
Die neue Datenbank ist eine 1:1 Kopie der ursprünglichen DB.
Auf meinem Dev-Server kann ich mein Unterverzeichnis überhaupt nicht aufrufen, ich bekomme einfach einen 500er Error.
Deshalb habe ich das ganze Mal in meiner Vagrant-VM installiert und da kommt zwar etwas zurück, aber das Theme sieht kaputt aus.
Außerdem werden die Links nicht richtig gesetzt.
Die anderen Links sind genauso aufgebaut, er hängt immer den richtigen Link, an den alten Link an.
Die Seiten sind grundsätzlich aufrufbar, wenn man den richtigen Link eingibt.
@h_lohaus
Ja Schritt 5 wurde auch befolgt.
Die zusätzlich Verlinkung der Ordner css, js und fonts hat auch nicht geholfen.
Die anderen Links sind genauso aufgebaut, er hängt immer den richtigen Link, an den alten Link an.
Die Seiten sind grundsätzlich aufrufbar, wenn man den richtigen Link eingibt.
Das ist ein Bug in SW6, wenn man beim SaleChannel die URL nicht mit korrekten Pfad angibt. Wenn man ihn hinterlegt, passt der Pfad.
Die anderen Links sind genauso aufgebaut, er hängt immer den richtigen Link, an den alten Link an.
Die Seiten sind grundsätzlich aufrufbar, wenn man den richtigen Link eingibt.
Das ist ein Bug in SW6, wenn man beim SaleChannel die URL nicht mit korrekten Pfad angibt. Wenn man ihn hinterlegt, passt der Pfad.
Stimmt, wenn ich meinedomain.de/staging/ als URL eintrage, werden die richtigen Links generiert. Ich kann jetzt durch die Seite klicken.
Danke dafür!
Das css, js etc. kommt aber noch nicht an.
Wie lauten den die Links im Quelltext? Wars du den im staging Verzeichnis, als du die Befehle ausgeführt hast?
Wenn ich aufs Frontend gehe, sehe ich in den Requests, dass er sich immer bei der all.cs, bei der demostore-logo.png und bei der all.js einen 500er Error zurückgibt.
Die Links sehen aber richtig aus. Beispielsweise für die demostore-logo.png sieht der Link folgendermaßen aus:
Im Staging-Verzeichnis ist auch die Verknüpfung zum übergeordneten media-Ordner, der Pfad sollte also passen.
Ich habe mal den Request via Postman ausgeführt und mir die Antwort angesehen.
Dort kommt:
Argument 5 passed to Symfony\Component\ErrorHandler\ErrorRenderer\HtmlErrorRenderer::__construct() must be a string or a callable, Symfony\Component\HttpFoundation\RequestStack given.
Außerdem hänge ich einen Screenshot von staging-Ordner an. Die dortigen Verknüpfungen funktionieren auch, sprich wenn ich auf media klicke, komme ich auf den Ordner /home/vagrant/www/shopware/public/media
mir ist aufgefallen, dass dein subdir-project nur mit dem Development-Template funktioniert.
Mit einer Release-Version, also der Version, die man sich auf der offiziellen Seite holen kann, funktioniert das Ganze dann nicht mehr.
Er fliegt dann bei der index.php in Zeile 46 hin weil er den namespace Shopware\Development\Kernel nicht findet.
Hättest du dafür einen Fix?
Trotzdem natürlich vielen Dank im Voraus für deine Arbeit.