CGI Perl脚本不工作,只有CGI的bash脚本正在努力?(cgi perl scripts n

2019-08-01 22:06发布

我有奇怪的问题,

命令行CGI的bash脚本和CGI Perl脚本正在努力 ,但是从浏览器只CGI的bash脚本正在努力,而不是和CGI Perl。

从浏览器访问CGI Perl脚本后,我获得500内部服务器错误

and apache error log says

[Thu Oct 25 01:58:59 2012] [error] [client x.x.x.x] (13)Permission denied: exec of '/home/x/x/x/x/public_html/cgi-bin/test.cgi' failed
[Thu Oct 25 01:58:59 2012] [error] [client x.x.x.x] Premature end of script headers: test.cgi

我想从浏览器中运行CGI Perl脚本。

我该怎么做。

[root@www ~]# which perl
/usr/bin/perl

[root@www cgi-bin]# perl test.cgi
Content-type: text/plain

testing...

test.cgi源

#!/usr/bin/perl

print "Content-type: text/plain\n\n";
print "testing...\n";

谢谢你的时间。

它是一个专用的服务器与Apache 2。

Answer 1:

正如Barmar提到的,你可能有一个权限问题。 此外,由于你是刚刚起步,这里是一个改进的测试脚本:

#!/usr/bin/perl
use strict;
use warnings;

#Useful for testing: Perl error messages, plus your die statements, will get
#sent to the browser.  Otherwise you will just see "Internal Server Error".
use CGI::Carp qw/fatalsToBrowser/;

#Always use the CGI module for your scripts.
use CGI; 

#Create simple HTML output (taken directly from CGI documentation).
my $q = CGI->new;                    # create new CGI object
print $q->header,                    # create the HTTP header
      $q->start_html('hello world'), # start the HTML
      $q->h1('hello world'),         # level 1 header
      $q->end_html;                  # end the HTML

请参阅上CGI文件以获取更多信息。

此外,对于澄清:“脚本头过早结束”错误意味着你的脚本没有发送输出到浏览器。 在这种情况下,那是因为你的脚本未运行。 但是,它也可以,如果你的脚本运行,但实际上并没有发送任何输出发生。 它是了解一个有用的错误。



Answer 2:

你的Perl脚本正确设置权限? 与您的bash脚本设置权限对它们进行比较。

也许chmod 755将帮助作为建议在这里 (只有不幸的是德语)



Answer 3:

检查哪个用户通过运行的httpd

[root@www ~]# top | grep httpd
15607 apache    16   0  210m  19m 4228 S 23.5  0.2   0:00.52 httpd

在apache用户上面正在运行。

尝试苏阿帕奇,

确认您是通过命令WHOAMI APACHE,

如果你还没有切换到阿帕奇那么这意味着没有外壳被分配给用户的apache,

现在修改/ etc / passwd文件

找到用户Apache和改变从结束

/bin/false

to 

/bin/bash

保存passwd文件,然后尝试苏阿帕奇,与WHOAMI检查,如果成功切换到用户阿帕奇然后转到该脚本所在的目录,并尝试从那里运行它。

你会得到像

bash: /usr/bin/perl: Permission denied

这意味着用户“阿帕奇”没有权限用户的Perl。

您需要添加的权限来执行perl脚本用户“阿帕奇”。

***不要忘了更改passwd文件,因为它是以前。

您可以通过添加一组特定的用户和不断变化的组名httpd.conf中做到这一点。

谢谢



文章来源: cgi perl scripts not working, only cgi bash scripts are working?
标签: perl apache cgi