“使用HTML :: TableExtract”打破CGI脚本

时间:2015-09-26 13:28:50

标签: perl cgi

我是CGI的新手。我围绕perl,cgi,html和javascript编写了一个非常复杂的模块。它在命令行上运行完美。但我无法通过浏览器运行它。我从脚本底部逐行调试,但发现问题出在HTML :: TableExtract模块本身。所以要简单 -

# perl -c test.cgi
test.cgi syntax OK

test.cgi

#!/usr/bin/perl

use strict;
use warnings;

use HTML::TableExtract;

print "Content-type: text/html\n\n";
print <<htmlcode;
<html>
<head>
<title>CGI Perl Example</title>
</head>
<body>
<h1>CGI Perl Example</h1>
<p>CGI Perl Example</p>
</body>
</html>
htmlcode

这在命令行上完美运行。但是,如果我通过浏览器运行它,它就行不通。但是,如果我删除“使用HTML :: TableExtract”,它再次完美无缺 - 即使在浏览器中也是如此。权限已正确设置为755.

有人可以帮我理解,我错过了什么?我怎样才能从浏览器中启动它。如何进行调试 - 如果我提到使用HTML :: TableExtract,我的浏览器会将我重定向到找不到的页面。

注意:想指出一件事,这可能与围绕HTML :: TableExtract设置一些环境变量有关。当我第一次安装模块时,我的主机管理员帮助解决了一个错误。

# ./test.cgi
Content-type: text/html

<html>
<head>
<title>CGI Perl Example</title>
</head>
<body>
<h1>CGI Perl Example</h1>
<p>CGI Perl Example</p>
</body>
</html>

1 个答案:

答案 0 :(得分:2)

调试perl CGI脚本

use CGI::Carp;添加到您的脚本中,以便向浏览器报告错误 [它通过STDOUT而不是STDERR上的默认文本生成http回复]

很可能从命令行和Web服务器执行的脚本搜索不同位置的模块,例如由于PERL5LIBPERLLIB环境变量的不同设置。

警告

CGI::Carp可能是&#34;生产中的安全威胁&#34; cgi脚本的版本。
它可能为(潜在的)黑客提供关键信息。