我的perl CGI脚本给出“内部服务器错误”

ui7jx7zq  于 2023-06-04  发布在  Perl
关注(0)|答案(2)|浏览(151)

我是写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目录,但没有用。

zxlwwiss

zxlwwiss1#

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

印刷品

Content-Type: text/html\n\n

但是您希望打印Content-Type: text/html,后面跟着两个换行符。

print "Content-Type: text/html\n\n";
suzh9iv8

suzh9iv82#

如果您运行的是Apache,则可能需要配置Apache以允许CGI,并且需要在Apache配置中指定ScriptAlias指令。Instructions for that is here.
如果您想100%确定错误与您的代码无关,而是与您的Web服务器配置相关,请创建包含以下内容的脚本:

#!/usr/bin/perl
print "Content-Type: text/html\n\n";
print "Hello World!"

如果此脚本不运行,则您可以肯定这是Web服务器配置问题。它也可能与权限有关。您的.cgi或.pl脚本通常需要权限设置为755。
在某些情况下,Perl可能未安装。请在命令提示符下运行以下命令,以确保已安装Perl:

perl -v

如果你的perl版本没有显示,那么你知道它没有安装,你需要安装它来适应你的Linux风格。

相关问题