2016-07-26 39 views
1

我已經通過我自己配置​​我的Apache,並已在我的本地, 配置CGI,但我收到:錯誤消息「Forbidden您無權訪問此服務器上的/~[uname]/***.cgi。」

紫禁城您沒有權限訪問此服務器上/[username/**.cgi。

我的http.conf(/etc/apache2/httpd.conf)

Before: #LoadModule userdir_module libexec/apache2/mod_userdir.so 
After: LoadModule userdir_module libexec/apache2/mod_userdir.so 

Before: #Include /private/etc/apache2/extra/httpd-userdir.conf 
After: Include /private/etc/apache2/extra/httpd-userdir.conf 

Before: #AddHandler cgi-script .cgi 
After: AddHandler cgi-script .cgi .ru .pl 

我的[用戶名]的.conf(在/ etc/apache2的/用戶/ [用戶名]的.conf)

<Directory "/Users/[username]/Sites/"> 
    AllowOverride All 
    Options Indexes FollowSymLinks MultiViews +ExecCGI 
    AddHandler cgi-script .cgi 
    Require all granted 
</Directory> 

我的CGI文件(用戶/ [用戶名] /網站/ ** CGI)

#!/usr/bin/perl                      
print "Content-Type: text/html \n\n" 
str = "Hello World" 
print str 
print "\n" 

我的Apache的版本:

Server version: Apache/2.4.18 (Unix) 

而且我已經試過此命令:

$ sudo chmod 755 ~/Sites 
$ sudo chmod 755 ~/Sites/**.cgi 
+0

什麼是pe '〜'的調整?這需要apache用戶可讀和可執行,否則它將無法訪問'〜/ Sites'。 –

+0

歡迎使用Stack Overflow和Perl標記。這是一個很好的第一個問題。 :)你的Perl代碼中有一個語法錯誤。 'str =「Hello World」'是錯誤的。變量需要一個'$'sigil,所以它需要是'$ str =「foo」'和'print $ str'。但這不是問題。 – simbabque

回答

0

的第一行必須是:

#在/ usr/bin中/ perl的-wt

加這兩個標誌(-wT)在末尾

相關問題