Perl脚本不通过其设置路径定位文件

时间:2012-09-03 13:14:50

标签: sql-server perl cgi

我正在开发名为MARS(多重访问报告服务)的报告工具。这是一个通过SQL服务器读取报告的工具。我们有一个本地机器测试环境设置,一切运行正常但是当我们上传到Windows Server 2008时,它似乎不想找到“必需”文件。我们在服务器上运行Perl(v5.14.2),在桌面/本地运行旧版本。

我收到的错误是: * HTTP错误502.2 - 错误的网关 指定的CGI应用程序因未返回完整的HTTP标头集而行为不端。它返回的标题是“无法在@INC中找到jsdb.pl(@INC包含:/ Inetpub / Scripts / Inetpub / Scripts / Security c:/ Perl / site / lib c:/ Perl / lib。)\ gl-0185-nas07p \ MCL_Dev_MPN_GL \ Green_App \ MARS \ Scripts \ Security \ security.pl第7行。“。*

这是Security.pl文件中的标题,其中明确包含设置路径和文件:

use CGI qw/:standard *table start_ul/;
use Date::Calc;
use Win32::ODBC;
use POSIX qw(floor);

###
use lib "/Inetpub/Scripts/Security";
require "jsdb.pl";
###
require "javascript.pl";
require "SecurityUtils.pl";
use lib "/Inetpub/Scripts";
require "webpageutils.pl";

在JSDB文件中是“配置文件”选项卡的代码,该选项卡用于设置和修改系统用户。

任何帮助都非常感激,因为我们似乎无法理解它。

2 个答案:

答案 0 :(得分:2)

您似乎对区分大小写不敏感,即在文件中列为jsdb.pl,在您的问题中,您将其标识为JSDB。此外,错误消息将违规文件标识为security.pl,但您的问题称为Security.pl。 Perl区分大小写。这可能是一个因素,例如jsdb.pl文件实际上名为JSDB.pl?

答案 1 :(得分:0)

jsdb.pl在哪里?从您的源文件中我猜它在/Inetpub/Scripts/Security中,它看起来不像是我的Windows路径。

猜测一下,您的Windows Server计算机上只存在C:/Perl/site/libC:/Perl/lib,并且该计算机上的其他路径不同,或者您根本无法访问jsdb.pl

此外,您似乎没有在代码顶部使用use strictuse warnings,而require 'library.pl'使用库的方法可能会更好