Apache-2.2
在 Apache 權限問題下使用 Perl 執行 CGI
我的 Debian 框中有以下條目
apache2.conf
。AddHandler cgi-script .cgi .pl Options +ExecCGI ScriptAlias /cgi-bin/ /var/www/mychosendir/cgi-bin/ <Directory /var/www/mychosendir/cgi-bin> Options +ExecCGI -Indexes allow from all </Directory>
然後我在這些目錄和權限下儲存了一個 perl cgi 腳本:
nvs@somename:/var/www/mychosendir$ ls -lhR .: total 12K drwxr-xr-x 2 nvs nvs 4.0K 2010-04-21 13:42 cgi-bin ./cgi-bin: total 4.0K -rwxr-xr-x 1 nvs nvs 90 2010-04-21 13:40 test.cgi
但是,當我嘗試在網路瀏覽器中訪問它時:
http://myhost.com/mychosendir/cgi-bin/test.cgi
他們給了我這個錯誤:
[Wed Apr 21 15:26:09 2010] [error] [client 150.82.219.158] (8)Exec format error: exec of '/var/www/mychosendir/cgi-bin/test.cgi' failed [Wed Apr 21 15:26:09 2010] [error] [client 150.82.219.158] Premature end of script headers: test.cgi
它出什麼問題了?
更新:
我的 也有以下條目
apache2.conf
:<Files ~ "^\.ht"> Order allow,deny Deny from all </Files>
而內容
test.cgi
是這樣的:#!/usr/bin/perl -wT print "Content-type: text/html\n\n"; print "Hello, world!\n";
確保你有一個 cgi-bin 目錄的 <Directory> 部分。並確保其中包含“所有人允許”。
<Directory /var/www/mychosendir/cgi-bin> Options +ExecCGI -Indexes allow from all </Directory>
另外…您的 ScriptAlias 用於 /cgi-bin/。您的 URL 是 /mychosendir/cgi-bin。除非你有一些重寫魔法,否則你的 url 應該是http://my.host.com/cgi-bin/test.cgi,或者你需要改變你的 ScriptAlias 行看起來像
ScriptAlias /mychosendir/cgi-bin/ /var/www/mychosendir/cgi-bin
您在更新中發布的錯誤聽起來像您沒有 #! 腳本開頭的行。你需要一個,它應該看起來像
#!/path/to/your/perl