Debian

配置 Apache 2.4 以允許 Debian Jessie 上的 CGI

  • August 7, 2016

我是系統管理員和 Apache 配置的新手。試圖讓 AWStats 執行,但在故障排除中已經嘗試在埠 8888 上執行一個簡單的 Hello World(html 輸出)腳本,並且遇到了 403 Forbidden 的問題。

這不是腳本:

mikekilmer@glitchbox:/var/www/html$ perl /usr/lib/cgi-bin/hello.pl
Content-type: text/html

<HTML>

<HEAD>
<TITLE>Hello, world!</TITLE>
</HEAD>

<BODY>
<H1>Hello, world!</H1>
</BODY>

</HTML>

Shebang 匹配 perl 的路徑:#!/usr/bin/perl

這些是主要的配置設置:

<Directory />
       Options FollowSymLinks
       AllowOverride None
       Require all denied
</Directory>

<Directory /usr/share>
       AllowOverride None
       Require all granted
</Directory>

<Directory /var/www/>
       Options Indexes FollowSymLinks
       AllowOverride All
       Require all granted
</Directory>

目錄和文件權限為 755 和 644,所有權為 root:root(在 cgi-bin 和 perl 文件上)。

Apache 的 html/index.html 出現: http ://www.infiniteglitch.net:8888/manual.html/howto/cgi.html

這是錯誤日誌所說的: [Sat Jun 06 05:53:24.412867 2015] [authz_core:error] [pid 28374:tid 140381836453632] [client 108.205.62.183:55886] AH01630: client denied by server configuration: /usr/local/apache2

我想也許我在配置 Apache 以允許 CGI 時遺漏了一些東西。

模組

  1. 注意:如果 Apache 已經建構了共享模組支持,您需要確保模組已載入;在您的 apache2.conf 中,您需要確保 LoadModule 指令沒有被註釋掉。正確配置的指令可能如下所示:
LoadModule cgi_module modules/mod_cgi.so

我不知道它是否是使用共享模組支持建構的。使用 apt-get 安裝。在配置文件中找不到 LoadModule 行。如果我將上面的行添加到apache2.conf,Apache 將不會重新啟動。

ScriptAlias 2. 配置文件中有一個ScriptAlias,由AWStats 放在那裡。添加這個指令ScriptAlias /cgi-bin/ /usr/local/apache2/cgi-bin/似乎沒有做任何事情。我什至嘗試將我的 hello(或者我應該說 hellp)腳本移動到/usr/local/apache2/cgi-bin/靜止的 403 中。

顯式使用選項 甚至嘗試添加

Options +ExecCGI
AddHandler cgi-script .cgi

<Directory /var/www/>指令。

一切都無濟於事。下一步有什麼想法嗎?

[Sat Jun 06 05:53:24.412867 2015] [authz_core:error] [pid 28374:tid 140381836453632] [client 108.205.62.183:55886] AH01630: client denied by server configuration: /usr/local/apache2

這意味著您尚未為您的網路伺服器配置授權。

你想要做的是確保你有類似的東西

<Directory /usr/local/apache2/cgi-bin>
   Require all granted
</Directory>

請注意,在 Debian 中,有一個高級配置系統可以為您完成所有這些工作,如果您使用它的話 ;-)

為此,首先刪除(或註釋掉)您已經添加的內容。然後:

a2enmod cgi
service apache2 restart

引用自:https://unix.stackexchange.com/questions/207906