繁体   English   中英

Perl cgi脚本作为纯文本运行

[英]Perl cgi scripts ran as plain text

在开始之前,我想说的是我已经读过这篇文章: Perl Apache:以纯文本形式显示的Perl脚本

我读过,尝试了一下,但没有解决(可悲)

我在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文件中,并且一直使用错误的(未配置的文件夹)。

这里有一些尝试:

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

  2. 确保脚本是可执行的。 通过键入以下内容:

    chmod + x yourscript.pl

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

    #!的/ usr / bin中/ perl的

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

我没看到

#!/usr/bin/perl

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

确保启用了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";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM