ファイルがPHPの場合、mod_headersがヘッダーを送信しない


9

.htaccessファイルを次のように設定しました。

 Header set MyHeader "I'm Set!"

http://example.com/test/デフォルトのインデックスファイルのないそのディレクトリ()に移動し、ネットワークアクティビティ(この場合はChrome)を表示すると、ヘッダーが送信されていることがわかります。PHPファイル(http://example.com/test/test.php)に移動すると、ヘッダーが送信されません。

index.htmlを(単に<pre>Hiコンテンツとして)作成し、送信されます。ファイル名を.phpヘッダーなしに変更します。orignal test.phpをに変更するtest.htmlと、ゴミのようなコードが出力され、ヘッダーが送信されます。に変更test.phpするtest.pngと、壊れた画像アイコンが表示され、ヘッダーが送信されます。

したがって、mime-typeとファイル拡張子に関して上記以外のテストを行わないと、.phpファイル(legitまたはその他)のみが.htaccessルールを適用しないように設定されているか、具体的にはmod_headersディレクティブが設定されているようです。しかし、これをテストする方法がわかりません。これは共有サーバーであるhttpd.confため、ざっと見回すことはできません。

Apacheがphpファイルのヘッダーの送信をスキップする理由に関するアイデアはありますか?

私も試しました:

 <FilesMatch "\.(php)$">
     Header set MyHeader "I'm Set!"
 </FilesMatch>

PHP / CGIからPHP / FastCGIへのアップデートで修正されたようです。根本的な原因を誰かが知っていれば、私はまだフィードバックを得たいと思っています。
アンソニー

1
アンソニー、あなたはmod_fastcgiを使いましたか?私はまったく同じ動作を経験し、mod_fastcgiがmod_headers機能を壊すようです。:私はこのバグレポート昨日掲載bugs.launchpad.net/ubuntu/+source/libapache-mod-fastcgi/+bug/...
Onkeltem

ここに同じ:/それに関するニュースまたは回避策?これが他のケースでは問題にならないとは思えません...
AdrianFöder17年

回答:


4

これは、CGIスクリプトを実行するときに予想される動作です。mod_headers docsの最新(2.4)バージョンから:

onsuccessのデフォルト値は、次に示すような状況では常に変更する必要がある場合があります。このディレクティブを両方の条件で繰り返すことは、既存のヘッダーに関して常に成功のスーパーセットではないため、いくつかのシナリオでは意味があることにも注意してください。

[...]
CGIスクリプトによって生成されたヘッダーを変更または削除しています。その場合、CGIスクリプトは、常に対応するテーブルにあり、デフォルトのテーブルにはありません。

元の問題(おそらく、より良い説明付き)は、バグ49308にあります。


私がそれを正しく読んでいれば、使用Header always set MyHeader "I'm Set!"することで問題は解決したはずです。私は誰かがそれを提案した答えを見つけたと思います、そしてそれはその場合にもOPのために機能しませんでした。しかし、私は彼らがを試してみようと言ったこともかなり確信しHeader set alwaysています。
アンソニー

いいえ、取り戻します。私はその試みにctrl-zして、それはでしたHeader always set。見積もりを誤解しているだけですか?
アンソニー

元の質問では、それを指定していません。本当にセットですか?Header always set MyHeader "I'm Set!"あなたの例によれば、それはのようなものでなければなりません。
Andrew M.

まあ、私はそれを試してみましたが、Apacheの推奨はありませんでした。それが機能しているので、CGIからFastCGIへの切り替えであると思い込んでいますが、私は周りに疑いを抱いています。
アンソニー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.