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
答案 0 :(得分:2)
错误显示.DLL的完整路径这一事实表明系统在查找DLL时没有遇到任何问题,因此这可以支持您的理论,即文件权限是问题。
要测试它是否真的是权限问题,请尝试编写一个简单的Perl CGI脚本,该脚本除了直接打开特定的.DLL文件(正常open
调用)之外什么都不做,并报告它是否有效。
答案 1 :(得分:1)
谢谢Alnitak。我尝试了你的建议,并且'open'成功打开'C:/usr/lib/auto/DBD/Oracle/Oracle.dll'。我记得当我在另一台计算机上进行开发时看到这个确切的错误,但那是因为Oracle Instant Client库正在酝酿它。安装完这些并设置'Path'变量后,一切开始正常。
答案 2 :(得分:1)
我遇到了同样的问题,通过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文件夹。