Sql 为什么可以';我的Perl CGI脚本找不到Oracle DBD?

Sql 为什么可以';我的Perl CGI脚本找不到Oracle DBD?,sql,perl,oracle,permissions,Sql,Perl,Oracle,Permissions,DBD和Oracle主机: 我有一个Perl web应用程序,它的行为异常。我正在使用它从Oracle数据库和报告中读取一些内容。我已经安装了Oracle即时客户端的11.1.0.6.0版。我在WinXP上运行,并将PATH环境变量设置为即时客户端位置。我的Web服务器有Apache2 问题是:当我从命令行运行应用程序时,它可以顺利运行。但是,当我从运行时,会出现以下DB访问错误: install_驱动程序(Oracle)失败:无法为模块DBD加载'C:/usr/lib/auto/DBD/Ora

DBD和Oracle主机:

我有一个Perl web应用程序,它的行为异常。我正在使用它从Oracle数据库和报告中读取一些内容。我已经安装了Oracle即时客户端的11.1.0.6.0版。我在WinXP上运行,并将PATH环境变量设置为即时客户端位置。我的Web服务器有Apache2

问题是:当我从命令行运行应用程序时,它可以顺利运行。但是,当我从运行时,会出现以下DB访问错误:

install_驱动程序(Oracle)失败:无法为模块DBD加载'C:/usr/lib/auto/DBD/Oracle/Oracle.dll::Oracle:load_文件:在C:/usr/lib/DynaLoader.pm第202行找不到指定的模块。在(评估9)第3行

直觉告诉我这是一个许可问题,但我不确定该往哪里看。有人能解释一下吗?我将非常感谢任何帮助

谢谢,
Saker Ghani

错误显示了.DLL的完整路径这一事实表明系统在查找DLL时没有任何问题,因此这支持了您的理论,即文件权限是问题所在


要测试它是否真的是一个权限问题,请尝试编写一个简单的Perl CGI脚本,它只会直接打开特定的.DLL文件(使用一个普通的
open
调用),并报告它是否工作。

感谢Alnitak。我试着按照你的建议去做,“open”成功地打开了“C:/usr/lib/auto/DBD/Oracle/Oracle.dll”。我记得我在另一台机器上开发时看到了这个bug,但那是因为Oracle即时客户端libs对它有误解。在我安装了这些程序并设置了“Path”变量之后,一切都开始正常工作。

我也遇到了同样的问题,在通过接口访问cgi perl程序时,报告了错误“Install\u driver(Oracle)失败:无法为模块DBD::Oracle:load\u文件加载“C:/Perl/lib/auto/DBD/Oracle/Oracle.dll”:在C:/Perl/lib/DynaLoader.pm第201行拒绝访问

我在Windows2003服务器上使用Perl5.10和IIS6


解决方案是将Perl目录的权限授予“Everyone”以及Oracle安装文件夹

您能否提供错误消息中提到的调用的代码?Apache的错误日志中是否有错误?