Was ist der Vorteil eines Pub-Verzeichnisses in Magento 2?

11

Vielleicht verstehe ich es einfach nicht, aber wenn meine Dateien bereits zwischengespeichert sind, was würde dann ein Pub-Verzeichnis in Magento 2 verwenden? Meine einzige Vermutung wäre, dass die Verwendung des Fallback-Mechanismus durch einen bekannten Satz von Dateien für das Thema etwas erleichtert werden könnte.

Durch das Lesen der Dokumente verstehe ich den Nutzen nicht genau, obwohl ich das Gefühl habe, dynamische, statische und zwischengespeicherte Dateien gut zu verstehen.

Soweit ich weiß, ist der Cache einfach ein definierter bekannter Speicherort von Assets, was mich zu der Vermutung veranlasste, dass das Pub-Verzeichnis ein Mechanismus ist, der den Speicherort der Dateien standardisiert, um die für den Fallback-Mechanismus verwendeten Ressourcen zu reduzieren.

Brian Ellis
quelle
Gute Frage, ich frage mich, ob die Sicherheitssache der einzige Vorteil ist oder auch die Geschwindigkeit verbessert
Claudiu Creanga

Antworten:

15

Das Pub-Verzeichnis ist eine Sicherheitsmaßnahme, um den öffentlichen Zugriff auf Ihre Stammverzeichnis-Assets, nämlich das App-Verzeichnis, zu blockieren. Es wird angenommen, dass der Grund, warum sich index.php auch im Stammverzeichnis befindet, Personen anspricht, deren Webhost es schwierig oder unmöglich macht, Ihre Webroot zu ändern.

Bei Verwendung der Datei pub / index.php kann nicht auf den Quellordner der App zugegriffen werden, solange index.php aus dem Stammverzeichnis ausgeführt wurde. Diese Praxis ist auch in Symfony und Zend 2 zu sehen.

Auf diese Weise wird keine der Magento-Anwendungskonfigurationen, -vorlagen usw. verfügbar gemacht.

Im Allgemeinen sind Kenntnisse der Architektur in Bezug auf pub index.php und root index.php für Frontend-Entwickler in einem Team nicht erforderlich, aber das Verständnis der Grundlagen ist gut zu wissen.

Brian Ellis
quelle
Sie müssen hinzufügen document_root_is_pub = truein Ihr , ./app/etc/env.phpwenn Ihr Wurzel /pub/- github.com/magento/magento2/pull/9094
Alex Gusev
10

Magento 2 enthält zwei index.php-Dateien, wobei sich eine Datei im Stammordner und eine andere im Ordner / pub befindet. Magento 2 bietet an, Ihre Anwendung mit einer dieser Dateien auszuführen. Wenn Sie Ihre Anwendung mit /pub/index.php ausführen, ist dies aus Sicherheitsgründen eine gute Entscheidung, da sie den unbefugten direkten Zugriff auf Anwendungsdateien einschränkt.

Als Randnotiz ist zu beachten, dass die /index.phpDatei im Entwicklermodus und /pub/index.phpim Produktionsmodus verwendet wird

Raphael beim digitalen Pianismus
quelle
1
Ich freue mich darauf, darauf hinzuweisen, dass es 2 index.php-Dateien gibt, aber was den Nutzen und die Verwendung der Implementierung unter Verwendung dieser Typarchitektur angeht, wurden beide nicht angesprochen. Es sei denn, ich vermisse mehr in dem Thema, in dem ich die Frage beantwortet habe, indem ich die Artikel und Dokumente von Alan Storm, Zend und Symfony durchgesehen habe.
Brian Ellis
Können Sie in Bezug auf Ihre letzte Aussage zu dev / prod bestätigen, wo dies getan wird? Ich sehe so etwas nicht
Claudiu Creanga
Ich bin bei @brianellis, warum muss es so sein? Es scheint den Browser sowieso nicht zu täuschen, was ich sehen kann.
ladle3000