2012-09-03 31 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是他們存儲在我們的本地測試環境中的地方,但在服務器上目錄已更改。我已經做出了改變,現在它工作正常。 –