Shopware Root Directory -> You should not be able to see this page

Hi Folks,

Zu Testzwecken wollte ich gerade Shopware 6 Version installieren und das in einer SubDomain so wie ich das auch bei anderen Testinstallationen mache. Um keinen Konflit mit .htaccess Konfigurationen zu bekommen, liegt das Verzeichnis für die besagte SubDomain nicht innerhalb des DocumentRoot der Hauptdomäne, sondern parallel dazu.

/public_html/fuer_die_hauptdomain

/public_html/shopware

Die Hauptdomain und jede Subdomain haben quasi ihr eigenes DocumentRoot. Was 1000-fach mit anderen Installationen problemlos funktioniert, mag Shopware6 offenbar nicht, sodass ich nach Aufruf der Subdomain für die Shopware Installationen den schon an anderer Stelle mehrfach angezeigten Fehler bekomme, dass Shopware 6 unmittelbar in das eigentlich nicht zutreffende DocumentRoot /public_html installiert werden will. Es mag ja sein, dass Shopware 6 aus Sicherheitsgründen irgendwas außerhalb des DocumentRoot ablegen will, aber wenn man so ein Sicherheitsfeature haben will, dann muss man auch die Webserver EInstellungen richtig auslesen können. In diesen lässt sich nämlich nicht auslesen, dass mein /public_html das DocumentRoot  wäre, sondern eben das jeweilige Verzeichnis für die SubDomain.

Gibt es da einen Hack um das zu ändern?

Der Fehler kommt eigentlich nur, weil du statt /public_html/shopware auf das Verzeichnis /public_html/shopware/public routen musst.

 

Ist zwar strange, aber teste ich gleich mal. Danke

Ausprobiert und funzt nicht, egal ob nun /public_html/shopware oder /public_html/shopware/public

Warum ist das strange?
Bei Symfony zeigt der VHost immer auf /public, weil da die Dateien liegen, die öffentlich erreichbar sein sollen. Das hat alleine Sicherheitsgründe, damit nicht jede PHP-Datei im Netz erreichbar ist. /public im Shopware-Verzeichnis ist also erstmal die korrekte Einstellung.

Was heißt denn konkret „funzt nicht“? Bekommst du die gleiche Fehlermeldung oder eine andere?
mod_rewrite ist aktiv? Die installation würde man dann ja über /recovery/install im browser aufrufen.

Es erscheint deswegen strange, weil wenn allein durch Änderung/Ergänzung von Verzeichnissen der Installation quasi vorgaugelt werden soll, dass es im richtigen Verzeichnis wäre. Das kann ja eigentlich weniger im Sinne der Sicherheit sein, wenn man die Sicherheit als Begründung dafür angibt. Ich kritisiere aber nicht die Sicherheit, ganz im Gegenteil. Es gibt auch andere Applikationen, die das in gleicher Weise machen, also bestzimmte Dateien/Verzeichnisse außerhalb des DocumentRoot  ablegen. Nur können die dann auch die Einstellungen des jeweiligen DocumentRoot  richtig auslesen und darum gehts.

Funzt nicht heißt, dass ich egal wo ich die Installation ausführe und egal in welches Verzeichnis ich die Installation/SubDomain route ich immer den gleichen Fehler bekomme.

Und ja, mod_rewrite ist aktiv. Ansonsten würden meine 20 anderen Installationen nicht funktionieren.

Naja, es läuft ja auf einer Standard apache und nginx Installation. Haben hier ja auch weitere Leute im Einsatz.

Zeig mal deine Vhost Config.

Vhost Config habe ich schon nachgesehen. Der Pfad zum DocumentRoot ist der, der er sein soll. Nirgendwo gibt es eine Konfiguration, dass auf /public_html eine Domain routen würde oder /public_html der DocumentRoot wäre. Das /public_html Verzeichnis ist deswegen über www nicht erreichbar, eben weil der DocumentRoot für die TLD Domain auf /public_html/hauptdomain routet. Das Einzige, was ich mir als Ursache vorstellen kann, ist dass der Shopware Installer nicht den Pfad vom DocumentRoot ausliest, sondern den HomeDir Pfad und dann nur 1 Verzeichnis unmittelbar unter diesem HomeDir akzeptiert, was dann das /home/public, bzw. /home/public_html wäre.

Ich hab mir meine Konfiguration aber nicht selbst zusammengebastelt, sondern nur die Vorgabe von cPanel/WHM befolgt.

Wie kommst Du darauf, dass es auf einer Apache/nginx Standard Installation laufen würde? Ich habe weder Apache noch nginx, aber die Konfiguration und alles andere wird aus der Apache Config ausgelesen.

Ich kann mir gut vorstellen, dass eine SW6 Installtion auf normalen Webspace durchaus zu Problemen führen kann, denn nicht jeder kann sein DocumentRoot verbiegen.

Problem gelöst, war mein (Lese)Fehler. Nachdem der gezippten Installationsdatei keine Installationsanleitung beigelegen hat, bin ich davon ausgegangen, dass man das gezippte File in das Verzeichnis extrahiert, wo auch das DocumentRoot definiert ist. Tatsächlich ist es aber so, dass das Routing auf das in der Verzeichnisstruktur der Installation angelegte /public Verzeichnis erfolgen muss. Somit erklärt sich einiges. Die ganze Schreiberei hätte man sich ersparen können, wenn man das Install HowTo dem gezippten File beilegen würde. Nur mal so in den Raum geworfen…

 

Trotzdem Danke für die Hilfe!

Hallo, wie bist Du auf die Lösung gekommen?
Wie hast Du das umgesetzt?
Gibt es inzwischen eine bessere, vollständige Anleitung?

VG
sven-sw

Hallo, wie bist Du auf die Lösung gekommen?

Es ist an allen Ecken so dokumentiert.

Wie hast Du das umgesetzt?

Das kommt im Wesentlichen drauf an welche Software Du zur Server Verwaltung verwendest. Bei Shared Hosting Angeboten ist das nur schwer umzusetzen.

Gibt es inzwischen eine bessere, vollständige Anleitung?

Egal welche Anleitung, ist die Vorgehensweise immer die Gleiche. Nur das wie und ob hängt davon ab welche Rechte Du als Nutzer auf dem Server hast. Bei Shared Hostings sind die Möglchkeiten sehr begrenzt bis unmöglich.

Da ist die Konfiguration beschrieben.

Meine bisherigen Lösungsansätze ebenso, zum Erfolg bin ich noch nicht gekommen.

Hast Du da eine konkrete Lösung?

Deine Konfiguration spielt hier keine Rolle. Du musst in der Lage sein, den DOCUMENT_ROOT für die Domain zu ändern. Es würde evtl. weiterhelfen, wenn Du mir sagst, welche Software Du zur Server Veraltung verwendest. Du kannst aber auch Deinen Provider fragen, ob es möglich ist den DOCUMENT_ROOT für eine Domain zu ändern. So was geht entweder bequem über die Server Verwaltung oder händisch über die Apache Konfiguration. Letzteres ist übrigens so in der Doku beschrieben.

Danke, Problem wurde zwischenzeitlich gelöst.

Lösung:

sudo apt install php8.0-xml