繁体   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