Apache:包括不適用於 CGI 腳本的虛擬 SSI
.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(查找)功能來查找來自您的條目。
有關他們處理的所有黑客嘗試的範例,請參閱此答案的結尾。讓他們處理而不是嘗試在野外執行自己的伺服器是值得的每一分錢。
回答:我相信您使用
<!--#Include
for CGI 是問題所在。大多數現代 Apache 伺服器需要您使用:
<!--#exec cgi="/cgi-bin/myScript.cgi" -->
而不是簡單地包含腳本。
==> 確保您的 HTML 文件具有
.shtm
或.shtml
副檔名。請注意,所有
/cgi-bin/
文件都需要具有 755 權限。- 這意味著所有者的 RWX 和團體和公共的 RXchmod 755 /cgi-bin/*
===> 永遠不要給他們或 .htaccess 文件 777 權限,否則外面的人可以很容易地改變他們。
這說明了為什麼最好使用託管服務而不是執行自己的伺服器。
黑客嘗試的範例日誌輸出,大部分被 RBL 阻止: