web-dev-qa-db-ja.com

.phpページで、Server 2008でIIS 7.0と表示される404エラーが発生するのはなぜですか?

PHPのセットアップにFastCGIを使用しています。 iis.net Webサイトの指示に従いました。ハンドラーマッピングを追加し、php.iniファイルを指定どおりに編集しました。エラーページに表示されている物理パスが存在していても、「検索中のページは削除されました」という404.0エラーが表示されるだけです。この手動の方法(phpの解凍、ハンドルマッピングの手動での追加など)を試した後、すべてを削除してWeb Platform Installer(ugh)を試しましたが、それでも同じ問題が発生します。

もう少し情報:
詳細なエラーページには、ハンドラーがStaticFileハンドラーであると記載されています(PHP FastCGIではありません)。エラーコード0x80070002も表示されます。

ログを見ると、 "GET /php.ini"が404エラーを示しています。 IISそれを探しているのはなぜですか?

5
scottm

誰かが同じ問題でこの問題を見つけた場合に、愚かな答えを追加したかっただけです。 「仲間」がサーバー上にテストファイルを作成しました。彼は404エラーを受け取りました。何が起こったのかというと、Windowsがファイル拡張子を隠していたため、ファイルは実際にはindex.php.txtと呼ばれていました。

4
Shaun Forsyth

このエラーメッセージが表示されたとき、php-cgi.exeディレクトリにC:\Program Files\PHPファイルさえないことに気付きました。

FastCGIエラーが発生している場合は、php-cgi.exeファイルを直接ダブルクリックして、クラッシュした場合はWindowsアプリケーションログでエラーを確認することもできました。 PHPバグレポート からのこのコメントからこれを取得しました:

[2010-04-22 06:43 UTC] iteontech dot comのセホ

IISと他のクレイジーなものの束をデバッグした後、これは私のために働いたものです。私はPHP 5.3.2 Windows 7およびIIS 7. PHP-CGI.EXEを実行してみてください(ITでダブルクリック)。エラーメッセージやポップアップが表示されるかどうかを確認します。大量のエラーメッセージが表示され、すべてが詰まっています。エクステンションはオンになっていますが、extフォルダーでは使用できません。これらの無効なエクステンションのPHP.INIをクリアすると、問題は解消されます。

3
icc97

デフォルトでは、IISは有効なMIMEタイプマッピングを持たないファイルを提供せず、404応答を返します

実行しようとしているWebサイトに対して.php拡張子にMIMEタイプが定義されていない場合PHP then IIS will not serve the fileそのファイルタイプに関連するハンドラがある場合でも。

IIS 7サーバー上のManagerを確認しましたが、MIMEタイプのリストにPHPのマッピングがデフォルトではありません。Webサイトが以前に存在していた場合、 FastCGIをインストールした場合、既存のWebサイトへのマッピングは自動的に追加されませんが、新しいWebサイトを作成したときにFastCGIはすでにインストールされています。

もちろん、私はその最後のビットについて完全に間違っている可能性がありますが、ファイル拡張子からMIMEタイプへのマッピングの問題は、IIS-マッピングなし=その拡張子で提供されるファイルなし)のセキュリティ機能です

2
RobV

まあ、どうしたかわかりませんが、なんとか修正しました。私はウェブサイトを削除して再度追加し、FastCGIマッピング設定を確認しました。すべてが以前と同じように見えましたが、今回は機能します。可能であればエラーが発生した理由を知りたいのですが。

2
scottm

このエラーに対する私の解決策は2つの部分に分かれていました。

  1. (@ icc97の回答より)-PHPフォルダー内のphp-cgi.exeをダブルクリックして、正常に起動できることを確認します。
  2. 私のindex.phpファイルの実際の名前はindex.php.htm(「ファイル拡張子名を隠す」をオフにする)
1
LarryK

今日、この問題が発生しましたが、上記の修正はどれもうまくいきませんでした。 IIS=で詳細なエラー処理をオンにしたところ、404.7エラーが表示されていました。「リクエストフィルタリングモジュールはファイル拡張子を拒否するように設定されています」。

IISマネージャ、[。php]を承認済みのファイルタイプとして追加し、[リクエストフィルタリング]メニューに移動すると、問題が解決しました。

0
Paul Rodger

インストーラーを使用せずに作業を行う理由はありますか?

また、.phpハンドラーマッピングが正しく設定されていることを確認できますか?

Path : *.php
State : Enabled
Path Type : File or Folder
Handler : FastCgiModule
0
Thijs Tijsma

私も同様の問題に対処しましたが、Webで見つけたすべての返信はまったく役に立ちませんでした。まず、あなたは http://yourservernamehere/check.php を実行してみて、すべてが正常に戻ってきたと思います。この場合は、php.iniファイルで次の設定を確認することをお勧めします。

[日付];日付関数で使用されるデフォルトのタイムゾーンを定義しますdate.timezone =

私のように空白である可能性が最も高く、これは新しいバージョンのphpで愚かなエラーを生成し、タイムゾーンを指定するまで(理由はアメリカ/シカゴ)、水中で死んでしまいます。

私はあなたの状況について多くのことを想定しているかもしれませんが、それは私のものと非常によく似ていて、数日間かけてイライラして答えを探しました。

0
Charles