2012-09-03 32 views
0

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

我正在receieving错误是: * HTTP错误502.2 - 错误的网关 通过不返回一组完整的HTTP标头的行为不当指定的CGI应用程序。它返回的标题是“无法在@INC中定位jsdb.pl(@INC包含:/ Inetpub/Scripts/Inetpub/Scripts/Security c:/ Perl/site/lib c:/ Perl/lib。)at \ gl-0185-nas07p \ MCL_Dev_MPN_GL \ Green_App \ MARS \ Scripts \ Security \ security.pl line 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文件中是用于设置和修改系统用户的“配置文件”选项卡的代码。

任何帮助真的很感激,因为我们似乎无法得到我们的头。

+0

错误包括@INC列表。你确定脚本运行的用户对该目录有读权限吗?如果您在Windows 8中使用IIS,则用户将是'IUSR'。 – Andomar

+0

感谢您的回复..我目前以应用程序的管理员身份登录,这是它显示的错误。 –

回答

2

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

0

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

在猜测,只有C:/Perl/site/libC:/Perl/lib您的Windows Server计算机上存在,而其它路径是机器上的不同或您只需从那里

另外要jsdb.pl用不上,你似乎并没有要在代码顶部使用use strictuse warnings,并且使用require 'library.pl'库的方法可能会好得多

+0

谢谢你们,我找到的问题是该文件不存储在Inetpub下。 Inetpud是他们存储在我们的本地测试环境中的地方,但在服务器上目录已更改。我已经做出了改变,现在它工作正常。 –