2010-01-14 88 views
2

我有一個在Windows Server 2003的Apache和IIS6上運行的Perl Web應用程序。在Apache上,此腳本工作得很好。在使用ISAPI的IIS中,我收到以下錯誤消息:ISAPI無法找到包含在「use lib」目錄中的Perl XS

Software error:
Can't load 'lib/auto/Sub/Name/Name.dll' for module Sub::Name: load_file:The specified module could not be found at C:/Perl/lib/DynaLoader.pm line 230. at lib/DBIx/Class/Schema.pm line 10
Compilation failed in require at lib/DBIx/Class/Schema.pm line 10.

BEGIN failed--compilation aborted at lib/DBIx/Class/Schema.pm line 10.
Compilation failed in require at (eval 39) line 3. ...propagated at C:/Perl/lib/CGI/Carp.pm line 314.
BEGIN failed--compilation aborted at My/Schema.pm line 2. Compilation failed in require at...

在IIS中不使用ISAPI時,它運行良好。我們希望在我們的IIS環境中繼續使用ISAPI。爲什麼它不能找到這個模塊,儘管它在運行普通的Perl時可以使用?

編輯:

我們用相對路徑調用它。

use lib qw{My lib}; # line in question 
use My::Schema; # explodes 
+0

兩個環境中的@ @ INC是否有所不同? – Ether

+0

順便說一下,問題標題暗示你明確正在'使用lib ...',但是你沒有在正文中提到這一點。你能否包含相關代碼('use lib'指令,以及試圖加載正在被炸燬的模塊的'use'行)? – Ether

+0

特別是,使用ISAPI可能會改變Perl的默認目錄 - http://www.serverwatch.com/tutorials/article.php/10825_1407921_5/ISAPI-Perl-Primer.htm。你用相對路徑還是絕對路徑調用'use lib'? – mob

回答

0

Mobrule,你的評論給了我們啓示。使用vanilla Perl解釋器和ISAPI的相對路徑是不同的。

use lib qw{My /Inetpub/wwwroot/cgi/lib}; # a little more specific... 
use My::Schema; # not nearly as much dying now. 

感謝您的幫助!

相關問題