This is a redhat linux 6.2 box with perl 5.005_03, Apache 1.3.12,
mod_perl 1.24, DBD::Oracle 1.06, DBI 1.14 and oracle 8.1.6. 
For some odd reason, in order to use DBI, I have to set 
LD_LIBRARY_PATH first. I don't think I needed to do this when I
used oracle 7. This is fine on the command line because 
I can set it in the shell environment. For cgi scripts, 
the problem is also solved by using apache SetEnv directive. However, 
this trick does not work under modperl. I had tried PerlSetEnv
to no avail. The message is the same as if the LD_LIBRARY_PATH is not set:

install_driver(Oracle) failed: Can't load
'/usr/lib/perl5/site_perl/5.005/i386-linux/auto/DBD/Oracle/Oracle.so' for module 
DBD::Oracle:
libclntsh.so.8.0: cannot open shared object file: No such file or directory at
/usr/lib/perl5/5.00503/i386-linux/DynaLoader.pm line 169. at (eval 27) line 3 Perhaps 
a required shared
library or dll isn't installed where expected at /usr/local/apache/perl/tmp.pl line 11 

Here is the section defining LD_LIBRARY_PATH under Apache::Registry:

PerlModule Apache::Registry
Alias /perl/ /usr/local/apache/perl/
<Location /perl>
  PerlSetEnv LD_LIBRARY_PATH /u01/app/oracle/product/8.1.6/lib
  SetHandler perl-script
  PerlHandler Apache::Registry
  Options ExecCGI
  PerlSendHeader On
  allow from all
</Location>

Does anyone know why PerlSetEnv does not work in this case?
How come SetEnv works for cgi scripts? What is the work around?

Thanks for any info.

Richard

Reply via email to