我是写CGI脚本的新手,我写的一个脚本有一个问题,它的目的是复制第一个参数中给定的字符串,复制第二个参数中的值。例如,对于调用http://localhost:8080/script. cgi?abc+3,脚本应该显示“abcabcbc”。
我在Linux Red Hat的tmp/$USER/httpd/cgi-bin中。当我启动localhost时,我得到消息“内部服务器错误”下面是用Perl编写的代码。
#!/usr/bin/perl
use strict;
use warnings;
# Get input from URL
my $input = $ENV{QUERY_STRING};
# Parse input into string and number of repetitions
my ($string, $reps) = $input =\~ /^(\\w+)+(\\d+)$/;
# Generate HTML output
print "Content-Type: text/html\\n\\n";
print "\<html\>\<body\>\\n";
print "<p>The string '$string' repeated $reps times:</p>\\n";
print "<p>" . ($string x $reps) . "</p>\\n";
print "\</body\>\</html\>\\n";`
我将chmod +x script.cgi和chmod +x设置为cgi-bin目录,但没有用。
2条答案
按热度按时间zxlwwiss1#
印刷品
但是您希望打印
Content-Type: text/html
,后面跟着两个换行符。suzh9iv82#
如果您运行的是Apache,则可能需要配置Apache以允许CGI,并且需要在Apache配置中指定ScriptAlias指令。Instructions for that is here.
如果您想100%确定错误与您的代码无关,而是与您的Web服务器配置相关,请创建包含以下内容的脚本:
如果此脚本不运行,则您可以肯定这是Web服务器配置问题。它也可能与权限有关。您的.cgi或.pl脚本通常需要权限设置为755。
在某些情况下,Perl可能未安装。请在命令提示符下运行以下命令,以确保已安装Perl:
如果你的perl版本没有显示,那么你知道它没有安装,你需要安装它来适应你的Linux风格。