it-swarm.com.de

Slim Framework gibt immer 404 Error zurück

Heutzutage verwende ich Slim Framework als mein einfachstes Werkzeug, um die PHP-Web-API zu entwickeln.

Ich folge einigen Schritten von dort. Laden Sie das Slim Framework herunter, legen Sie das richtige Verzeichnis und die richtigen Dateien ab. Anpassen der Einleitungsaussagen wie z.

//1. Require Slim
require('Slim/Slim.php');

//2. Instantiate Slim
$app = new Slim();

//3. Define routes
$app->get('/books', function ($id) {
    //Show book with id = $id
});

Und dann modifiziere ich den Rest entsprechend. 

Wie meine Checkliste, die schon gemacht wurde:

  • LoadModule rewrite_module modules/mod_rewrite.so -> aktiviert
  • Schlank.

RewriteEngine On RewriteCond% {REQUEST_FILENAME}! -F RewriteRule ^ (. *) $ bootstrap.php [QSA, L]

Aber nach einmal führe ich diese Aussage aus;

$app->run();

Und ich lasse es in meinem Browser laufen. Dann habe ich 404 Error beim Testen auf meinem Localhost bekommen. Was ist die Lösung, um das zu beheben?

Zu Ihrer Information, hier ist meine einfachste PHP -Datei, die ich gerade verwende. (gemeinsamer Link)

24
gumuruh

Das Problem ist gelöst!

Mein Apache ist eigentlich normal, und die .htaccess-Datei, die früher bereitgestellt wurde, ist auch normal.

Der Hinweis ist die URL, die ich verwendet habe. Vorher habe ich die ungültige URL verwendet, so dass der 404-Seitenfehler ausgegeben wurde. Ich habe es gerade bemerkt, als ich versuchte, über diesen Browser auf die neuere GET-URL zuzugreifen.

http://localhost/dev/index.php/getUsers/user1

und jetzt funktioniert das!

Ich habe es erst realisiert, als ich diese Aussagen gefunden hatte;

Wenn Slim keine Routen mit URIs findet, die mit der HTTP-Anforderung übereinstimmen URI, Slim gibt automatisch eine 404 Not Found-Antwort zurück.

Wenn Slim Routen mit URIs findet, die mit dem HTTP-Anforderungs-URI übereinstimmen, jedoch nicht mit Bei der HTTP-Anforderungsmethode gibt Slim automatisch eine 405-Methode zurück Nicht erlaubte Antwort mit einem Allow: -Header, dessen Wert HTTP .__ enthält. Methoden, die für die angeforderte Ressource akzeptabel sind.

43
gumuruh

Ich habe diesen Beitrag beim Googeln von "slimframework 404" gefunden. Die Post führte mich zu einer Lösung für mein Problem.

Das Problem

Ich habe mit Composer eine Site mit dem Slim-Framework eingerichtet und eine index.php mit dem folgenden Beispielcode von slimframework.com erstellt:

<?php
$app = new \Slim\Slim();
$app->get('/hello/:name', function ($name) {
    echo "Hello, $name";
});
$app->run();

Dann versuche ich die Seite mit http://localhost/hello/bob aufzurufen. Ich erhalte eine 404-Seite nicht gefunden.

Ich konnte mit http://localhost/index.php/hello/bob auf die Seite zugreifen.

Die Lösung

Ich habe die Lösung gefunden, indem ich /vendor/slim/.htaccess (im Lieferumfang von Composer Slim install enthalten) und den Abschnitt URL Rewriting der Dokumentation zum Slim-Framework sah.

Ich habe eine Kopie der /vendor/slim/.htaccess-Datei im selben Ordner wie meine index.php-Datei hinzugefügt. Der Inhalt der Datei ist:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L] 

Jetzt kann ich mit http://localhost/hello/bob auf die Seite zugreifen.

25
Tod Birdsall

Sie können die Datei index.php direkt in Ihre Datei aufnehmen. Dies geschieht jedoch, weil Sie mit Ihrem mod-rewrite .__ nicht richtig arbeiten. Bitte überprüfen Sie den folgenden Link:

https://github.com/codeguy/Slim

Im Abschnitt Erste Schritte können Sie sehen, wie Sie Ihren Server konfigurieren (falls Sie Apache/lighttpd/ngynx verwendet haben).

5
Darkaico

Für mich bestand das Problem darin, dass ich vergessen hatte, eine .htaccess-Datei in meinem Dokumentstammverzeichnis anzugeben.

.htaccess

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]
1
Magnus W

Ich denke, Ihr Problem liegt beim "Ressourcen-Parser", da Sie bei der Anforderung keinen $ id-Parameter definieren. Versuchen Sie es daher bitte:

//1. Require Slim
require('Slim/Slim.php');

//2. Instantiate Slim
$app = new Slim();

//3. Define routes
$app->get('/books/:id/', function ($id) {
    echo json_encode( getBook($id) );
});

// some stuff
$app->run();

Bitte sagen Sie uns, ob es in Ordnung ist

0
Ger Soto

Wenn Sie Slim auf Ubuntu 16.04 verwenden und der Fehler 404 angezeigt wird. Versuchen Sie diesen Test von Tod Birdsall oben:

Wenn das geht 

http: //localhost/index.php/hello/bob

und das funktioniert nicht 

http: // localhost/hallo/bob

und Ihre .htaccess-Datei im selben Verzeichnis wie Ihre index.php und ist wie folgt konfiguriert:

    <IfModule mod_rewrite.c>
       RewriteEngine On
       RewriteCond %{REQUEST_FILENAME} !-d
       RewriteCond %{REQUEST_FILENAME} !-f
       RewriteRule ^ index.php [QSA,L]
    </IfModule>

Und Sie erhalten immer noch den 404-Fehler in Apache.

Aktivieren Sie Apache mod_rewrite wie folgt und starten Sie Apache neu:

$ Sudo a2enmod umschreiben

$ Sudo-Dienst Apache2 neu starten

Die Slim-API sollte jetzt korrekt funktionieren, da die bereitgestellte .htaccess-Datei nur funktioniert, wenn mod_rewrite aktiviert ist und bei einer Neuinstallation nicht die Standardeinstellung ist.

So können Sie mod_rewirte ausschalten, wenn Sie dies benötigen.

$ Sudo a2dismod umschreiben

$ Sudo-Dienst Apache2 neu starten

0
Cosworth66

Für Leute, die immer noch Antworten suchen, weil vorherige nicht funktionieren, funktioniert dies für mich: 

RewriteBase /<base_of_your_project>/
0
Efbi

Zusätzlich muss das mod_rewrite.so-Modul in httpd.conf geladen sein, andernfalls erhalten Sie die Fehlermeldung 500.

LoadModule rewrite_module modules/mod_rewrite.so
0
user2454565