0

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

我收到的错误是: *HTTP Error 502.2 - Bad Gateway 指定的 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 文件中是用于设置和修改系统用户的“配置文件”选项卡的代码。

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

4

2 回答 2

2

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

于 2012-09-03T15:01:57.987 回答
0

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

猜测一下,仅存C:/Perl/site/lib在于 C:/Perl/lib您的 Windows Server 机器上,其他路径要么在该机器上不同,要么您根本无法jsdb.pl从那里访问

此外,您似乎没有在代码顶部使用use strict和,并且您使用库的方法可能会更好use warningsrequire 'library.pl'

于 2012-09-03T20:06:32.847 回答