[英]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.