Perl cgi脚本以纯文本形式运行

时间:2013-12-13 08:19:51

标签: perl apache cgi

在我们开始之前,我想说我已经读过这个:Perl Apache : Perl script displayed as plain text

我读过它,尝试过这些东西,没有成功(可悲)

我在Ubuntu上

我想运行cgi脚本,它们编译得很好,我对该文件夹有相应的权限(至少我没有得到错误,当我尝试通过浏览器输入它时我没有)并且文件运行作为纯文本。

首先是我要运行的文件:

 #!/usr/bin/perl

 use CGI qw/:standard/;
 print header,
 h1('CGI.pm is simple.'),
 end_html; 

我得到了源代码的输出。

该文件夹的路径为/var/www/a2/

并且apache .config文件中的配置为:

ScriptAlias /a2/ /var/www/a2/
<Directory "/var/www/a2">
AddHandler cgi-script .cgi .pl
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>

文件编译正常并在终端中打印html。

我唯一的猜测是我没有给予该文件适当的权利。

编辑:我检查了错误日志。它没有给出错误。

编辑:经过与Mark Setchell的长时间讨论,发现了错误。我把它发布在错误的.c​​onfig文件中,我一直在使用错误的(未配置的文件夹)。

3 个答案:

答案 0 :(得分:1)

以下是一些尝试:

  1. 确保您的脚本以扩展名“.pl”

  2. 命名
  3. 确保您的脚本可执行。通过输入以下内容来执行此操作:

    chmod + x yourscript.pl

  4. 正如Mark所说,确保将shebang作为脚本的第一行:

    #!的/ usr /斌/ perl的

  5. 删除“1;”最后,您只需要包/模块。

答案 1 :(得分:0)

我没看到

#!/usr/bin/perl

位于脚本的顶部。没有它,CGI处理程序将不知道如何执行它。

答案 2 :(得分:0)

确保启用apache cgi模式

sudo a2enmod cgi   //will enable the cgi mode
sudo service apache2 restart

确保.cgi文件的文件权限正常

sudo chmod 755 yourFile.cgi

尝试通过终端

执行
perl /Path_To_The_File/fileName.cgi

确保您的fileName.cgi在文件顶部包含以下代码

#!/usr/bin/perl -w

print "Content-type: text/html\n\n";