尝试在Apache 2.4.6 Ubuntu 13.10上运行perl cgi文件时出现500内部服务器错误

时间:2013-11-23 02:34:43

标签: perl apache ubuntu cgi

嗨,因为关于这个主题的其他帖子对我没有多大帮助(他们似乎都没有申请Ubuntu 13.10,我运行的Ubuntu版本),我决定另外一个。运行这些行后(建议运行这些行的stackoverflow成员)..

cd /etc/apache2/mods-enabled 
sudo ln -s ../mods-available/cgi.load .
sudo ln -s ../mods-available/cgid.load .
sudo service apache2 restart

我将cgi文件(它们是perl文件)放入我的Apache2的cgi-bin @ / usr / lib / cgi-bin中。键入localhost / cgi-bin / test.cgi时,出现500内部服务器错误。这就是服务器错误日志所说的内容..

[Fri Nov 22 21:23:29.045785 2013] [cgi:error] [pid 9559] [client 127.0.0.1:47663] AH01215:(8)exec格式错误:'/ usr / lib / cgi-的exec bin / test.cgi'失败了 [星期五11月22日21:23:29.046720 2013] [cgi:错误] [pid 9559] [client 127.0.0.1:47663]标题前的脚本输出结束:test.cgi

test.cgi看起来像这样......

 #!/usr/bin/perl

 print "Content-type: text/html\n\n";
 print <<HTML;
 <html>
 <head>
 <title>A Simple Perl CGI</title>
 </head>
 <body>
 <h1>A Simple Perl CGI</h1>
 <p>Hello World</p>
 </body>
 HTML
 exit; 

当有人发生或有任何建议时,有谁知道该怎么办?感谢

编辑::奇怪的是,我得到了这个cgi文件我叫test2.cgi来运行。

    #!/usr/bin/perl

    use strict;
    use warnings;

    sub main {

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

        print "Hello world\n\n";

        print "What's your favorite food brah?\n";

    }

    main();

但是我需要处理的更大,更高级的cgi文件不会运行。这些包括在html标签中打印的东西。

编辑:忽略代码中任何奇怪的间距。这就是我如何将它复制到帖子中。

1 个答案:

答案 0 :(得分:2)

编辑:如果在每行开头的原始代码中有额外的空格导致此问题,则不太清楚,如果没有,请忽略其余部分!谢谢阿蒙

如果您尝试从控制台运行它们,它将有助于立即查看任何错误。在这种情况下......

Can't find string terminator "HTML" anywhere before EOF 

#!/usr/bin/perl    # make sure no space before # and this comment is not here

print "Content-type: text/html\n\n";
print <<HTML;
<html>
....
</body>
HTML 
exit; # Make sure the HTML line before this has nothing either side of it 

基本上,删除#!/ usr / bin / perl行之前的单个空格,因为Amon指出它是否存在,并且结束HTML行也应该修复它(heredoc终结符周围不应该有任何东西,它的不明显每行开头都有空格,但有)。

有时,在网站上放置示例代码时,可能会引入空格等以便在视觉上提供帮助。我猜这里介绍的一些被复制到代码中。很难发现!