27

最近、私はphpwebapiを開発するための最も簡単なツールとしてSlimFrameworkを使用しています。これらの2つの記事の使用:

そこからいくつかの手順に従います。Slim Frameworkをダウンロードし、正しいディレクトリとファイルを配置します。次のような開始ステートメントを調整します。

//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
});

そして、それに応じて残りを変更します。

すでに行った私のチェックリストなど:

  • LoadModule rewrite_module modules/mod_rewrite.so->有効
  • スリムな.htaccess:

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

しかし、一度このステートメントを実行した後、

$app->run();

そして、ブラウザで実行します。ローカルホストでテストしているときに404エラーが発生しました。それを修正するための解決策は何ですか?

参考までに、これが私が現在使用している最も単純なPHPファイルです。(共有リンク)

4

8 に答える 8

46

問題は解決しました!

私のApacheは実際には正常であり、以前に提供された.htaccessファイルも正常です。

手がかりは私が使用したURLです。以前は無効なURLを使用していたため、404ページのエラーが返されました。これを使用してブラウザ経由で新しいGETURLにアクセスしようとしたときに気づきました。

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

そして今、それはうまくいきます!

これらのステートメントを見つけたら、私はそれを理解しました。

SlimがHTTPリクエストURIと一致するURIを持つルートを見つけられない場合、Slimは自動的に404NotFound応答を返します。

SlimがHTTPリクエストURIと一致するがHTTPリクエストメソッドとは一致しないURIを持つルートを検出した場合、Slimは、リクエストされたリソースに受け入れられるHTTPメソッドを値がリストするAllow:ヘッダーを含む405 MethodNotAllowed応答を自動的に返します。

于 2012-03-19T09:32:50.377 に答える
28

「slimframework404」をグーグルで検索しているときにこの投稿を見つけました。投稿は私の問題の解決策に私を導きました。

問題

Composerを使用してSlimフレームワークでサイトをセットアップし、slimframework.comから次のサンプルコードを使用してindex.phpを作成します。

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

次に、を使用してページにアクセスしようとしますhttp://localhost/hello/bob。404ページが見つかりませんページが返されます。

を使用してページにアクセスできましたhttp://localhost/index.php/hello/bob

ソリューション

Slimフレームワークのドキュメントの/vendor/slim/.htaccess(Composer Slimインストールに含まれている)とURL Rewritingのセクションを見て、解決策を見つけました。

このファイルのコピーを/vendor/slim/.htaccessindex.phpファイルと同じフォルダーに追加しました。ファイルの内容は次のとおりです。

RewriteEngine On

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

これで、を使用してページにアクセスできますhttp://localhost/hello/bob

于 2015-06-04T01:45:33.007 に答える
5

あなたはあなたのファイルにindex.phpを含めようとしていますが、それはあなたがmod-rewriteで正しく働いていないために起こります:次のリンクをチェックしてください:

https://github.com/codeguy/Slim

はじめにの部分では、サーバーを構成する方法を確認できます(apache / lighttpd / ngynxを使用している場合)

于 2012-06-05T18:09:12.660 に答える
1

リクエストで$idパラメータを定義していないため、問題は「リソースパーサー」にあると思います。次のことを試してください。

//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();

大丈夫かどうか教えてください

于 2013-05-30T16:38:36.607 に答える
1

私にとっての問題は.htaccess、ドキュメントルートにファイルを提供するのを忘れていたことです。

.htaccess

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]
于 2017-11-14T11:49:46.940 に答える
0

さらにmod_rewrite.so、モジュールをロードする必要があります。ロードしhttpd.confないと、エラー500が発生します。

LoadModule rewrite_module modules/mod_rewrite.so
于 2017-02-15T02:03:57.617 に答える
0

Ubuntu 16.04でSlimを使用していて、404エラーが発生している場合。上記のTodBirdsallからこのテストを試してください。

これが機能する場合

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

これは機能しません

http:// localhost / hello / bob

.htaccessファイルはindex.phpと同じディレクトリにあり、次のように構成されています。

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

それでも、Apacheで404エラーが発生します。

次のようにApachemod_rewriteをオンにして、Apacheを再起動してみてください。

$sudoa2enmodリライト

$ sudo service apache2 restart

提供された.htaccessファイルはmod_rewriteが有効になっている場合にのみ機能し、クリーンインストールのデフォルトではないため、SlimAPIは正しく機能するはずです。

必要に応じてmod_rewirteをオフにする方法は次のとおりです。

$sudoa2dismodリライト

$ sudo service apache2 restart

于 2017-12-28T07:13:30.770 に答える
0

以前が機能しないためにまだ回答を検索している人にとって、これは私にとってはうまくいきます:

RewriteBase /<base_of_your_project>/
于 2018-03-27T22:05:54.827 に答える