在我们开始之前,我想说我已经读过这个: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的长时间讨论,发现了错误。我把它发布在错误的.config文件中,我一直在使用错误的(未配置的文件夹)。答案 0 :(得分:1)
以下是一些尝试:
确保您的脚本以扩展名“.pl”
确保您的脚本可执行。通过输入以下内容来执行此操作:
chmod + x yourscript.pl
正如Mark所说,确保将shebang作为脚本的第一行:
#!的/ usr /斌/ perl的
删除“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";