2011-09-19 145 views
1

我有一个perl.cgi文件,该文件具有内容:CGI脚本不执行

#!/usr/bin/perl 
print "Content-type: text/html\n\n"; 
print "<h1>Hello World</h1>\n"; 

我做到了可执行文件。 (chmod a+x perl.cgi

然后我在同一个目录下创建了一个新文件perl.htm。当我在浏览器中运行的perl.htm

Content-type: text/html 
<p><a href="perl.cgi">RUN perl.cgi</a></p> 

然后我得到的输出:它具有以下数据

Content-type: text/html 
RUN perl.cgi 

当我点击RUN perl.cgi另一个页面打开,有输出为:

#!/usr/bin/perl 
print "Content-type: text/html\n\n"; 
print "<h1>Hello World</h1>\n"; 

perl.cgi未执行。只显示文件内容。

编辑:从答案和评论我来了解,我将不得不配置我的Web服务器(Apache)运行CGI脚本。我怎样才能做到这一点?让我知道。

+0

您需要更详细地描述您的Web服务器设置。 –

+1

投票移动到http://serverfault.com但尝试将文件重命名为'perl.pl'。如果不是这样,你需要正确地配置你的web服务器来执行perl cgi –

回答

9

听起来像Apache不配置为运行* .cgi文件:

AddHandler cgi-script cgi pl 
<Directory /path/to/cgi/files> 
    Options +ExecCGI 
</Directory> 
+0

done,仍然有相同的问题 –

+0

btw在末尾使用。 –

+0

你说得对,修好了。 –

0

你需要设置你的web服务器,使其在执行一个* .cgi文件(或者更通常情况下,所有的文件特定的目录),而不仅仅是将它们传送到浏览器,因为它会处理.html文件。

这是如何完成取决于您的服务器。

+0

我使用的是Apache。我怎样才能配置它能够运行CGI? –

+0

请参阅@Gabriel的答案,或者在部分添加ScriptAliasMatch ^/cgi-bin(。*)“/ full/path/to/cgi/directory/$ 1” – blankabout

4

确保您加载的CGI模块中的httpd.conf文件:

LoadModule cgi_module modules/mod_cgi.soLoadModule cgi_module modules/mod_cgid.so这取决于Apache的版本号,你正在运行。

您还可以阅读关于 Dynamic Content with CGI的其他解决方案。