簡體   English   中英

為什么我的Perl CGI腳本找不到Oracle DBD?

[英]Why can't my Perl CGI script find the Oracle DBD?

DBD和Oracle Masters:

我有一個奇怪的Perl Web應用程序。 我正在使用它從Oracle DB中讀取一些內容並報告。 我安裝了Oracle的Instant Client 11.1.0.6.0版。 我正在運行WinXP並將PATH環境變量設置為即時客戶端位置。 我為我的網絡服務器安裝了Apache2。

這就是問題:當我從命令行運行應用程序時,它可以正常運行。 但是,當我從http://127.0.0.1/cgi-bin/a.cgi運行時,我收到以下數據庫訪問錯誤:

install_driver(Oracle) failed: Can't load 'C:/usr/lib/auto/DBD/Oracle/Oracle.dll' for module DBD::Oracle: load_file:The specified module could not be found at C:/usr/lib/DynaLoader.pm line 202. at (eval 9) line 3

Intuition告訴我這是一個許可問題,但我不確定在哪里可以看得更遠。 任何人都可以對此有所了解嗎? 我非常感謝任何幫助。

謝謝,Saker Ghani

錯誤顯示.DLL的完整路徑這一事實表明系統在查找DLL時沒有遇到任何問題,因此這可以支持您的理論文件權限是問題。

要測試它是否真的是權限問題,請嘗試編寫一個簡單的Perl CGI腳本,該腳本除了直接打開特定的.DLL文件(具有正常的open調用)之外什么都不做,並報告它是否有效。

謝謝Alnitak。 我嘗試了你的建議,並且'open'成功打開'C:/usr/lib/auto/DBD/Oracle/Oracle.dll'。 我記得當我在另一台計算機上進行開發時看到這個確切的錯誤,但那是因為Oracle Instant Client庫正在醞釀它。 安裝完這些並設置'Path'變量后,一切開始正常。

我有同樣的問題,通過Interface訪問cgi perl程序時報告錯誤“Install_driver(Oracle)失敗:無法加載'C:/Perl/lib/auto/DBD/Oracle/Oracle.dll'模塊DBD :: Oracle:load_file:在C:/Perl/lib/DynaLoader.pm第201行拒絕訪問。

我在帶有IIS 6的Window 2003 Server上使用Perl 5.10。

解決方案是將Perl目錄的權限授予“Everyone”以及Oracle Install文件夾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM