On Oct 22, 2013, at 8:23 AM, Torsten Förtsch <torsten.foert...@gmx.net> wrote:

> On 21/10/13 19:57, Bruce Johnson wrote:
>> We've set a Directory directive for some perl scripts, setting a mod_perl 
>> handler:
>> 
>> Alias /card_access /home/allwebfiles/perl/catcard
>> 
>> <Directory /home/allwebfiles/perl/catcard>
>>     SetHandler perl-script
>>     PerlResponseHandler ModPerl::Registry
>>     PerlOptions +ParseHeaders
>>     Options +ExecCGI
>>     PerlSetEnv LD_LIBRARY_PATH /usr/lib/oracle/11.2/client64/lib
>>     PerlSetEnv ORACLE_HOME /usr/lib/oracle/11.2/client64
>> </Directory>
>> 
>> The %ENV variable is there, if I print the %ENV values:
>> 
>> LD_LIBRARY_PATH --> /usr/lib/oracle/11.2/client64/lib
>> MOD_PERL --> mod_perl/2.0.4
>> MOD_PERL_API_VERSION --> 2
>> ORACLE_HOME --> /usr/lib/oracle/11.2/client64
>> PATH --> /sbin:/usr/sbin:/bin:/usr/bin
>> 
>> But trying to initialize a DBI database connection results in the following 
>> error:
>> 
>> [Mon Oct 21 10:10:37 2013] [error] install_driver(Oracle) failed: Can't load 
>> '/usr/local/lib64/perl5/auto/DBD/Oracle/Oracle.so' for module DBD::Oracle: 
>> libocci.so.11.1: cannot open shared object file: No such file or directory 
>> at /usr/lib64/perl5/DynaLoader.pm line 200.\n at (eval 11) line 
>> 3\nCompilation failed in require at (eval 11) line 3.\nPerhaps a required 
>> shared library or dll isn't installed where expected\n at 
>> /home/allwebfiles/perl/catcard/oratest.pl line 9\n
>> 
> I haven't read the whole thread. So, I apologize if I state what
> somebody else has already explained.
> 
> To me the problem seems to be %ENV being tied to $r->subprocess_env. So,
> neither PerlSetEnv nor SetEnv actually change the current process'
> environment.

Pardon me if this sounds dumb, but what possible use are those directives, 
then? 

> The reason for that the environment is a global resource in
> a potentially multi-threaded process.
> 
> If you don't need these variables set differently for different requests
> you can perhaps set them before starting httpd. Or you can set them
> perhaps in a <perl> section or similar.
> 

That's one thing I don't think we've tried. What I still don't understand is 
how PerlSetEnv variables ARE present in the Apache process handled by that perl 
handler, but not in the perl handler code itself.

Even setting "%ENV{'LD_LIBRARY_PATH'}= <path to libs>;" in the perl handler 
code itself fails, and if the handler code cannot alter it's own process, then 
I'm stuck.

I'll try recompiling DBD::Oracle.

-- 
Bruce Johnson
University of Arizona
College of Pharmacy
Information Technology Group

Institutions do not have opinions, merely customs


Reply via email to