当文件是PHP时,mod_headers不发送头文件

我有我的.htaccess文件设置为以下内容:

Header set MyHeader "I'm Set!" 

如果我转到没有默认索引文件的目录( http://example.com/test/ ),并查看networking活动(在这种情况下,使用Chrome),我可以看到标题正在发送。 如果我去一个PHP文件( http://example.com/test/test.php ),头不会被发送。

我已经创build了一个index.html(简单地把<pre>Hi作为内容)并发送出去。 我将文件名更改为.php ,没有标题。 如果我更改orignal test.phptest.html ,它会输出垃圾代码,并发送头文件。 如果我将test.php更改为test.png ,我会得到一个破碎的图标,然后发送标题。

因此,如果没有在MIMEtypes和文件扩展名方面进行超出上述testing的话,那么只会出现.php文件(合法的或其他),或者设置为不具有.htaccess规则,或者特别指定mod_headers指令。 但我不知道如何testing这个,因为它是一个共享服务器,所以我没有httpd.conf访问权限。

任何想法,为什么Apache会跳过发送头文件的PHP文件?

我也试过:

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

这是运行CGI脚本时的预期行为。 从最新的(2.4)版本的mod_headers文档 :

onsuccess的默认值可能需要更改为总是在类似于下面列出的情况下。 还要注意,在两种情况下重复使用这个指令是有意义的,因为在现有的头文件中总是不是onsuccess的超集。

[…]
您正在修改或删除由CGI脚本生成的头文件,在这种情况下,CGI脚本位于始终对应的表中,而不是在默认表中。

最初的问题(也许有更好的解释)在Bug 49308中 。