【问题标题】:Perl Script not locating File via its set pathPerl 脚本未通过其设置路径定位文件
【发布时间】:2012-09-03 13:14:49
【问题描述】:

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

我收到的错误是: *HTTP 错误 502.2 - 网关错误 由于未返回完整的 HTTP 标头集,指定的 CGI 应用程序行为异常。它返回的标头是“无法在 @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 文件中是用于设置和修改系统用户的“配置文件”选项卡的代码。

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

【问题讨论】:

  • 错误包括@INC 列表。您确定运行脚本的用户对该目录具有读取权限吗?如果您在 Windows 8 中使用 IIS,则用户将是 IUSR
  • 感谢您的回复.. 我目前以应用程序管理员身份登录,这是它显示的错误。

标签: sql-server perl cgi


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    据推测,您的 Windows Server 计算机上仅存在 C:/Perl/site/libC:/Perl/lib,其他路径要么在该计算机上不同,要么您根本无法从那里访问 jsdb.pl

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

    【讨论】:

    • 谢谢大家,我发现问题是文件没有存储在 Inetpub 下。 Inetpud 是它们存储在我们本地测试环境中的位置,但在服务器上目录已更改。我已经进行了更改,现在可以正常工作了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-05
    • 1970-01-01
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多