2012-03-17 5 views
23

最近、私はスリムフレームワークをPHPウェブAPIを開発するための私の最も簡単なツールとして使用しています。 使用して、これら2つの記事は:スリムフレームワークは常に404エラーを返します

私はそこからステップのいくつかに従ってください。スリムフレームワークをダウンロードし、正しいディレクトリ&ファイルを置く。開始文を調整する;

//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モジュール/ mod_rewrite.so - >
  • スリム.htaccessの有効:のRewriteCondの%{REQUEST_FILENAME}で

RewriteEngineを!-f RewriteRule ^(。*)$ bootstrap.php [QSA、L]

しかし、かつての後、私はこの文を実行します。

$app->run(); 

は、私は私のローカルホスト上でそれをテストしながら、私は404エラーを得た....私のブラウザ上で実行します。それを解決するための解決策は何ですか?

FYI、ここで私が現在使っているもっとも単純なPHPファイルです。 (shared Link)

答えて

42

問題が解決しました。

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

ヒントは、私が使用したURLです。 以前は無効なURLを使用していたため、404ページのエラーが返されました。 私はちょうど、これを使って新しいGET URLにブラウザでアクセスしようとしました。

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

などです。

私はこれらのステートメントを見つけたらすぐに実現しました。

SlimがHTTP要求 URIに一致するURIを持つルートを見つけられない場合、Slimは自動的に404 Not Found応答を返します。

スリムHTTPリクエストURIはなく HTTPリクエストメソッドと一致するURIにルートが見つかった場合、スリム自動的許可と405方法 不可応答が返されます:値リストHTTPのために許容される 方法ヘッダー要求されたリソース

+9

ただ、問題点を明確にするために、あなたが前に使用しようとしていたURLは何でしたか? – RPDeshaies

5

あなたはあなたのファイル上のindex.phpを含めることについて正しいが、あなたは 次のリンクを確認してくださいあなたのmod - 書き換えで正常に動作していないので、それが起こる:

https://github.com/codeguy/Slim

あなたはあなたのサーバーを設定する方法を見ることができました(もしあなたがapache/lighttpd/ngynxを使っていた場合)

0

あなたはあなたが$ idを定義していないのであなたの問題は "Resource parser"リクエストのパラメータですので、してください、tr Y本:

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

それは "slimframework 404を" グーグルながら、私はこの記事を見つけた

21

大丈夫ならば、教えてください。このポストは私の問題の解決策に私を導いた。

問題

私はComposerを使用してスリムなフレームワークを使用してサイトを設定し、次のコード例のフォーム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を使用してページにアクセスできました。

ソリューション

Iは/vendor/slim/.htaccessを見て溶液(スリムインストール作曲/ wを含む)とスリムフレームワークドキュメントのURL Rewritingセクションを発見しました。

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

RewriteEngine On 

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

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

+6

正しい '.htaccess'ファイルを追加した後でもprobleが存続する場合は、仮想ホストが' AllowOverride'オプションで設定されていることを確認して、.htaccess書き換えルールを使用できるようにしてください: ' \tのAllowOverrideすべて \t注文が拒否、 \t iがAllowOverrideのすべてが、サーバーを使用し、すべての \t ' – anj

+0

こんにちは@cutRateGamerから許可することができ、私は持っているだろう、エラー500 –

+1

トッド-てBirdsallの答え+のANJコメント=ソリューション – NachPD

0

さらにmod_rewrite.soモジュールはhttpd.confにロードする必要があります。また、問題は、私は私のドキュメントルートに.htaccessファイルを提供するために、忘れていたことを私のためにエラー500

LoadModule rewrite_module modules/mod_rewrite.so 
1

受け取ることになります。

の.htaccess

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

あなたがUbuntuの16にスリムを使用している場合。04あなたは404エラーを取得しています。これはあなたのインデックスと同じディレクトリにある

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

と、このdoesntの仕事

http://localhost/hello/bob

とあなたの.htaccessファイルを動作する場合

:上のTodてBirdsallからこのテストを試してみてください。 phpであり、次のように構成されています。

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

Apacheで404エラーが発生します。

は、次のようにApacheのmod_rewriteをオンにしてくださいとApacheを再起動します。

$ sudoをa2enmod書き換え

$ sudoのサービスapache2の再起動

スリムAPIが提供さ.htaccessファイルとして正しく動作する必要がありますmod_rewriteが有効で、クリーンインストールでデフォルトではない場合にのみ動作します。

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

$ sudoをa2dismod書き換え

$ sudoのサービスapache2の再起動

関連する問題