2014-04-30 76 views
0

我使用Apache來使用cgi和ssi(服務器端包含)來提供網頁。我甚至在某些情況下使用它們,也就是說,使用ssi進一步擴展cgi程序的輸出以生成最終傳遞給客戶端的html。Apache使用ssi擴展cgi輸出

該系統在我的商業網站主機上正常工作,並且在安裝在我的個人計算機上的Apache上工作。但我最近升級到Debian Apache 2.4.7的Ubuntu 14.04 Trusty Tahr(64位)。 cgi和ssi都可以工作,但只能單獨使用。用ssi進一步擴展cgi輸出的嘗試失敗了,並且cgi程序的原始輸出被傳送到客戶端。

對於調整系統工作的建議將不勝感激。另一個有用的答案是在上面的Ubuntu配置中擴展帶有ssi的cgi輸出的文檔的簡短工作示例,不到一百行。

+0

你能粘貼一個不起作用的代碼或代碼片段和你的配置文件嗎?在Ubuntu上安裝Debian軟件包可能會有問題,因爲Debian以更慢,更穩定的速度發佈軟件,並且可能不包含某些補丁。我還會查看適用軟件的發行說明,以防某些東西被棄用或刪除。作爲最後的手段,如果需要,您可以安裝具有橋接網絡適配器的虛擬機。 – NuclearPeon

回答

0

有幾件事情值得一試:

  • 運行apache2ctl -M在Ubuntu的終端,並確保你有cgi_module並啓用include_module
  • 打開你的網站配置文件Apache和:
    • 確保該Options指令下,你有ExecCGIIncludesIncludesNOEXEC
    • 檢查,對其中有你的CGI腳本的目錄,你有SetHandler cgi-script設置,或正在使用ScriptAlias指令。

據我所知,這是不可能在同一個源文件中同時運行SSI和CGI。可以在運行時間之前預先生成另一個(如預處理程序),也可以在運行時將它們作爲單獨的文件「包含」。

爲包括CGI SSI選項:

  • <!--#include virtual="/cgi-bin/example.cgi?argument=value" -->
  • <!--#exec cgi="/cgi-bin/example.cgi" -->
  • <!--#exec cmd="perl /path/to/perlscript arg1 arg2" -->

我希望事情有幫助。

0

添加到您的.htaccess文件:

<Files ~ ".ssicgi$"> 
    Options +SymLinksIfOwnerMatch +Includes 
    AddOutputFilter INCLUDES .ssicgi 
</Files> 

重命名CGI腳本,它的輸出你想要分析的CGI的擴展名「.ssicgi」,所以它調用過濾版本重命名爲原始腳本的任何電話。

請確保upvote並接受答案,如果這爲你解決它。