首頁 >運維 >Apache >Apache伺服器如何使CGI執行?

Apache伺服器如何使CGI執行?

(*-*)浩
(*-*)浩原創
2019-11-30 11:30:385961瀏覽

CGI(公共閘道介面)定義了Web伺服器與外部內容產生程式互動的方式,這些程式通常被稱為CGI程式或CGI腳本。這是一種使用您最熟悉的程式語言將動態內容放在網站上的簡單方法。

Apache伺服器如何使CGI執行?

設定Apache以允許CGI

為了讓CGI程式正常運作,需要設定Apache以允許CGI執行。有幾種方法可以做到這一點。

方式1:ScriptAlias指令              ( 建議學習:Apache伺服器 )

ScriptAlias指令告訴Apache,為CGI程式留出了一個特定的指令目錄。 Apache將假定此目錄中的每個檔案都是CGI程序,並在用戶端請求該特定資源時嘗試執行該程序。

ScriptAlias指令如下所示:

ScriptAlias "/cgi-bin/" "/usr/local/apache2/cgi-bin/"

如果在預設位置安裝了Apache,則顯示的範例可在預設httpd.conf設定檔找到。

ScriptAlias指令很像Alias指令,它定義了一個對應到特定目錄的URL前綴。 Alias和ScriptAlias通常用於DocumentRoot目錄以外的目錄。

Alias和ScriptAlias之間的區別在於ScriptAlias具有額外的含義,即該URL前綴下的所有內容都將被視為CGI程式。

因此,上面的範例告訴Apache,對於以/cgi-bin/開頭的資源的任何請求都應該在目錄/usr/local/apache2/cgi-bin/中提供,並且應該被視為CGI程式。

例如,如果請求URL http://www.example.com/cgi-bin/test.pl,Apache將嘗試執行檔案/usr/local/apache2/cgi-bin/test.pl並返回輸出。當然,該檔案必須存在,並且是可執行的,並以特定方式傳回輸出,否則Apache將傳回錯誤訊息。

方式2:ScriptAlias目錄以外的CGI

因為安全性原因,CGI程式通常只限於ScriptAlias的目錄。透過這種方式,管理員可以嚴格控制允許誰使用CGI程式。但是,如果採取適當的安全預防措施,則沒有理由不能從任意目錄執行CGI程式。

例如,您可能想要使用UserDir指令讓使用者在其主目錄中擁有Web內容。如果他們想擁有自己的CGI程序,但無法存取主cgi-bin目錄,則需要能夠在其他地方運行CGI程式。

允許在任意目錄中執行CGI有兩個步驟。首先,必須使用AddHandler或SetHandler指令來啟動cgi-script處理程序。其次,必須在Options指令中指定ExecCGI。

方式3:使用Options來允許CGI執行

#可以在主伺服器設定檔中明確使用Options指令來指定在特定目錄中允許CGI執行:

<Directory "/usr/local/apache2/htdocs/somedir">
    Options +ExecCGI
</Directory>

上述指令告訴Apache允許執行CGI檔。還需要告訴伺服器哪些檔案是CGI檔案。以下AddHandler指令告訴伺服器將所有帶有cgi或pl副檔名的檔案視為CGI程式:

AddHandler cgi-script .cgi .pl

方式4:使用者目錄

要允許在使用者目錄中以.cgi結尾的任何檔案執行CGI程序,可以使用以下配置。

<Directory "/home/*/public_html">
    Options +ExecCGI
    AddHandler cgi-script .cgi
</Directory>

如果您希望指定使用者目錄的cgi-bin子目錄,其中所有內容都將被視為CGI程序,則可以使用下列命令。

<Directory "/home/*/public_html/cgi-bin">
    Options ExecCGI
    SetHandler cgi-script
</Directory>

以上是Apache伺服器如何使CGI執行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn