Apache:包括虚拟SSI不适用于CGI脚本

我有一个名为test.html文件中的以下服务器端包括…

 <!--#include virtual="/cgi-bin/myScript.cgi"--> <!--#include virtual="/includes/myFile.html"--> 

当我在我的浏览器中查看test.htmlmyFile.html正被插入/呈现,但是myScript.cgi正在给我

[在执行此命令时出现的错误]


所以,如果SSI正在工作,而myScript.cgi正在工作,为什么不包含#include virtual脚本?

作为一个侧面说明,这是一个cPanel托pipe帐户,我有许多其他帐户(网站)在同一个托pipe公司的服务器具有相同的configuration。 其他人都按预期工作。

  • cPanel版本:11.30.6(build 3)
  • Apache版本:2.2.17
  • 架构:x86_64
  • 操作系统:linux
  • Perl版本:5.8.8
  • 内核版本:2.6.18-194.32.1.el5
  • cPanel Pro:1.0(RC1)

该脚本只是将当天的年份作为格式化文本返回。 输出前面是Content-type: text/html\n\n ,它不是一个新的Perl脚本。 它正在其他帐户上工作。

我的托pipe公司将问题升级到了cPanel,让我感到尴尬的是,它最终成了我的.htaccess文件中的一个设置。

正在工作的帐户有这一行,破损的帐户,没有…

 Options All -Indexes 

All ,默认情况下,包括托pipe公司添加为了得到它的工作…

 Options +Includes +ExecCGI 

没有+ExecCGI ,就像我在原来的文章中所描述的那样。

在发现您的SSI工作方面很好的解决问题。
您已将问题本地化到CGI子系统。

首先,你需要确保你已经在你的.htaccess文件中设置了这个:

 Options ExecCGI 

如果问题仍然存在,则需要查看错误日志以找出原因:

此错误消息与500错误(通常是在.htaccess中出现错误时得到的错误)相同,因此日志是您可以在其中find描述性错误消息的位置。

cPanel允许你看到你的错误日志。

他们是你最好的朋友。

在错误日志部分,cPanel会向您显示您正在查找的客户端IP地址 – 顶部。 这是您的ISP分配的IP地址。

cPanel的现代版本(如2017年11月在Bluehost上使用的版本)突出显示了客户端的条目,因此黑客企图不会分散您的注意力。 如果您没有突出显示,请使用浏览器的Ctrl-F(查找)function来查找来自您的条目。

看到这个答案的结尾,他们处理的所有黑客攻击的例子。 值得每一分钱都让他们来处理,而不是试图在自己的服务器上运行自己的服务器。


解答:我相信你使用<!--#Include for CGI是个问题。

大多数现代的Apache服务器需要你使用:

 <!--#exec cgi="/cgi-bin/myScript.cgi" --> 

而不是简单地包括脚本。

==>确保你的HTML文件的扩展名是.shtm.shtml


请注意,所有/cgi-bin/文件都需要有755个权限。 – 这意味着所有者的RWX和组和公共的RX

 chmod 755 /cgi-bin/* 

===>永远不要给他们或者.htaccess文件777权限,否则外面的人可以很容易地改变它们。


这显示了为什么使用托pipe服务而不是运行自己的服务器的原因。

黑客企图的日志输出示例,大部分被RBL阻止:

在这里输入图像说明