
Problem
Vor kurzem, interessiert zu sehen, wie die Middleware Arbeit, Ich habe die Installation von der “Zend-ausdrucksstark-Skelett” als Leitfaden “Quick-Start: Mit Hilfe des Skeletts + Installateur”:
$ Komponist erstellen-Projekt zendframework/Zend-expressive-Skelett expressive |
Nach diesem, um das Ergebnis zu überprüfen, Habe ich den Browser auf die Adresse zugegriffen http://"localhost" / expressive/Public / und bekam die folgende Fehlermeldung:
Oops! Dies ist umständlich. Wir trafen die 404 Nicht gefundene Fehler. Sie sind auf der Suche ist etwas, dass' t vorhanden oder verschoben. Besuchen Sie eines der Links auf dieser Seite oder zurück zur Startseite. |
Lösung
Die Fehlermeldung weist darauf hin, dass die Seite nicht gefunden wurde, Also, Es sah aus wie ein Pfad-Problem (Art und Weise) für die Dateien der Anwendung.
Ein Blick rund um, Ich kam zu dem Schluss, dass dies geschah, weil ich nicht das Projekt erstellt, direkt in das Root-Verzeichnis der Veröffentlichung (Ex: Www/Htdocs /), aber in einem Unterverzeichnis, auf diese Weise: http://"localhost" /expressive/öffentliche /.
Wie auch immer, Es scheint, dass die Expressive haben Sie Schwierigkeiten mit Basis-Url / Basispfad. In der Tat muss die Architektur der Zend Framework-Verzeichnis Reihenfolge der Veröffentlichung “öffentliche /“, so sehr, daß, wenn führen Sie den Web-Server auf “öffentliche /“, die Anwendung funktioniert normal.
Ausführen des Befehls “PHP-S 0.0.0.0:8080 -t-Öffentlichkeit /” vom terminal (Befehl):
Taylor @ Taylor-w64 pc/c/wamp64/Www/expressive $ PHP-S 0.0.0.0:8080 -t public/ PHP 7.0.10 Entwicklungs-Server gestartet am Do Aug 10 15:55:00 2017 Hören auf http://0.0.0.0:8080 Document-Root ist C:\wamp64\www\expressive\public Press Ctrl-C to quit. [Thu Aug 10 15:55:34 2017] 127.0.0.1:65106 [404]: /expressive/Public / |
Nun ja, Dabei können Sie auf http://"localhost" / expressive/Public / ohne Fehler.
Aber um nicht zu bekommen, die immer darauf “öffentliche /“, Es ist eine Middleware Los/basepath Lösung-Gliederung. Die Installation ist einfach:
$ Komponist erfordern Los/BasePath |
Nach diesem, Fügen Sie einfach die Middleware wie eines der ersten in Ihrer Anwendung. Zum Beispiel, Ich habe den Aufruf der Datei “publicindex.php”, schon bald nach “$App” haben initialisiert:
1 | $App->Rohr(Neu \LosMiddlewareBasePathBasePath("expressive/öffentliche")); |
Das wars!
Referenz
– Zugang/Pfad/zu/öffentliche bekam 404 Seite
– Pfad-basierte Middleware für PHP
Von großem Wert! Half mir das Problem hier zu klären, das sehr ähnlich war. Dank!