DBD::Oracle的库文件报失问题

今天,有项任务是在两台服务器间移植基于ORACLE的Perl应用系统(硬件升级),结果在新的服务器上就是无法实现数据库模块加载,用命令行一切正常,但用浏览器就是无法打开,APACHE错误是无法加载libclntsh.so.10.1共享库。
库是正确的,路径也逐层查过权限,临时打开apache用户的登录,命令行下也是正常的。还有什么是CGI和shell之间有差别呢?ORACLE_HOME变量都设了,NLS也设了,还有其他的什么差别?还有其他环境变量需要明确吗?原有的服务器也只需这些参数呀!/etc/profile的相关设置都拷贝过来了,我转念想,库设置是不是也需在/etc/ld.so.conf设置,所以我就设置进去了,并随意地重新安装DBI/DBD模块,一试,系统正常了。我估计就是/etc/ld.so.conf的问题了。
可接下来的试验证明我错了,我在本地的开发服务器上取消/etc/ld.so.conf和环境变量的LD_LIBRARY等与Oracle库路径相关的设置,系统照样正常运行呀!正苦思冥想之际,下班了,没办法。
在回家的班车上,我想起了上面所述的随意安装过程,初步怀疑就是/etc/ld.so.conf设置后需编译安装DBD::Oracle,让库路径编译进共享库(常量化),后来的取消设置可能已改变不了共享路径的配置了,而在没有配置/etc/ld.so.conf的编译安装,只是利用环境变量的共享库路径信息,而这个是无法被CGI模块识别到。不过这只是我的初步判断,明天上班后再试试了。

本文转自 dannyy1026 51CTO博客,原文链接:
http://blog.51cto.com/dannyyuan/39542

你可能感兴趣的:(shell,数据库)