使文件扩展名由 PHP 解释步骤

2022-08-30 20:09:15

我把它添加到我的.htaccess文件中:

AddHandler fcgid-script .test

(我正在使用FastCGI / VirtualMin / WebMin)

并装箱一个包含内容的 test.test 文件;

<?php echo "test"; ?>

这会导致内部服务器错误,并在错误日志中显示以下消息:

[Thu Apr 16 14:12:57.631287 2015] [fcgid:warn] [pid 2646] (104)Connection reset by peer: [client xxxx:53595] mod_fcgid: error reading data from FastCGI server
[Thu Apr 16 14:12:57.631402 2015] [core:error] [pid 2646] [client xxxx:53595] End of script output before headers: test.test

我做错了什么?我尝试使用不同的处理程序名称,如x-httpd-php或x-httpd-php5,但这根本没有做任何事情。

我还尝试了:

<FilesMatch "\.test$">
  SetHandler fcgid-script
</FilesMatch>

但它具有相同的内部服务器错误。


答案 1

似乎FastCGId模块不知道如何执行你的脚本 - FcgidWrapper指令似乎丢失了(因为你的PHP脚本没有Shebang)。

根据您的发行版,您必须手动设置它,或者您可以调整已经处理.php文件的现有指令以处理.test文件(通常这应该使用“SetHandler fcgid-script”指令和设置/复制FcgidWrapper指令来完成)。

调整后的示例(取自 https://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html#examples):

<FilesMatch "\.test$">
    AddHandler fcgid-script .test
</FilesMatch>
Options +ExecCGI
FcgidWrapper /usr/bin/php5-cgi .test

更多信息和示例:https://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html#exampleshttp://tltech.com/info/php-on-fcgid/

其他问题可能基于权限,例如,如果您使用的是 suexec,则 fastcgid 进程无法写入日志或无法执行包装器脚本。在这里,如果您可以说明正常.php文件是否正确执行,那将非常有帮助。


答案 2

经过测试和验证, 工作:

因为你提到你正在使用Webmin,所以我为Webmin量身定制了我的答案。您也可以通过shell编辑Apache的配置来执行此操作。

我会注意到,通常最好编辑Apache的配置,在这种情况下可能是不可避免的,因为我不相信您可以在 中进行这种编辑。尽管可能有一个我不熟悉的黑客,但服务器管理员可能希望将其锁定在apache配置中。想到具有流氓文件扩展名的文件在每个目录的基础上飞来飞去,不仅听起来很慢,而且非常不安全。.htaccess.htaccess

步骤

我通过VirtualBox在Ubuntu 14.04上安装了Apache。我添加了Webmin和FastCGI。

我采取了以下步骤:

  1. 登录到Webmin,转到您的虚拟主机。
  2. 单击编辑指令
  3. 在底部添加以下内容:

<Directory />
    #Your SetHandler script here 
    #(@MrTux's script works here but NOT IN .htaccess)
    
    Require all granted
</Directory>
  1. 点击保存
  2. 点击顶部的“应用更改”。
  3. 大功告成!

我会注意到SetHandler传递了一些标头,因此,如果您声明这一点,则有可能标头已经发送,这就是触发错误的原因。同样,如果您能够控制系统,则 不是设置规则的首选方法。在这种情况下,无论如何都可能会导致安全问题。.htaccess.htaccess


推荐