Apache-2.2

Apache:包括不適用於 CGI 腳本的虛擬 SSI

  • November 2, 2017

.html我在一個名為test.html…的文件中有以下伺服器端包含

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

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

當我test.html在瀏覽器中實時查看時,myFile.html插入/渲染效果很好,但是myScript.cgi給了我

$$ an error occurred while processing this directive $$


  • 從瀏覽器地址欄中,/cgi-bin/myScript.cgi渲染輸出是否正常,證明文件存在於路徑中並且權限正確(755)。
  • SSI 處理程序設置正確,myFile.html包括很好,​​證明頁面正在被解析。

因此,如果 SSI 正在執行並且myScript.cgi正在執行,為什麼不#include virtual使用這個腳本呢?

作為旁注,這是在 cPanel 託管帳戶上,我在同一託管公司的伺服器上具有相同配置的許多其他帳戶(站點)。其他人都按預期工作。

  • cPanel 版本:11.30.6(建構 3)
  • 阿帕奇版本: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 腳本。它正在處理其他帳戶。

我的託管公司將問題上報到 cPanel,令我尷尬的是,它最終成為我.htaccess文件中的一個設置,畢竟失去了。

正在工作的帳戶有這條線,損壞的帳戶沒有…

Options All -Indexes

All,預設情況下,包括託管公司為了使其正常工作而添加的內容…

Options +Includes +ExecCGI

沒有+ExecCGI,它會像我在原始文章中描述的那樣中斷。

發現您的 SSI 工作的良好故障排除。

您已將問題定位到 CGI 子系統。

首先,您需要確保已在.htaccess文件中進行了設置:

Options ExecCGI

如果您的問題仍然存在,您將需要查看錯誤日誌以找出原因:

此錯誤消息與 500 錯誤相同(這通常是您在 .htaccess 本身中遇到的錯誤),因此您可以在日誌中找到描述性錯誤消息。

cPanel 允許您查看錯誤日誌。

他們是你最好的朋友。

在錯誤日誌部分,cPanel 會在頂部顯示您正在尋找的客戶端 IP 地址。這是您的 ISP 分配的 IP 地址。

現代版本的 cPanel(就像我在 2017 年 11 月在 Bluehost 使用的那個)會突出顯示來自您客戶的條目,因此黑客嘗試不會分散您的注意力。如果您沒有突出顯示,請使用瀏覽器的 Ctrl-F(查找)功能來查找來自您的條目。

有關他們處理的所有黑客嘗試的範例,請參閱此答案的結尾。讓他們處理而不是嘗試在野外執行自己的伺服器是值得的每一分錢。


回答:我相信您使用<!--#Includefor CGI 是問題所在。

大多數現代 Apache 伺服器需要您使用:

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

而不是簡單地包含腳本。

==> 確保您的 HTML 文件具有.shtm.shtml副檔名。


請注意,所有/cgi-bin/文件都需要具有 755 權限。- 這意味著所有者的 RWX 和團體和公共的 RX

chmod 755 /cgi-bin/*

===> 永遠不要給他們或 .htaccess 文件 777 權限,否則外面的人可以很容易地改變他們。


這說明了為什麼最好使用託管服務而不是執行自己的伺服器。

黑客嘗試的範例日誌輸出,大部分被 RBL 阻止:

在此處輸入圖像描述

引用自:https://serverfault.com/questions/359176