嗨,因为关于这个主题的其他帖子对我没有多大帮助(他们似乎都没有申请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标签中打印的东西。
编辑:忽略代码中任何奇怪的间距。这就是我如何将它复制到帖子中。
答案 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终结符周围不应该有任何东西,它的不明显每行开头都有空格,但有)。
有时,在网站上放置示例代码时,可能会引入空格等以便在视觉上提供帮助。我猜这里介绍的一些被复制到代码中。很难发现!