You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by Larry Leszczynski <la...@furph.com> on 2002/10/30 23:51:56 UTC

DBD::Oracle/Windows2000 OK from prompt, not mod_perl?

Hi -

I'm having a problem on Windows 2000 where DBD::Oracle works fine from
perl on the command prompt but not from inside mod_perl.  I think it is a
problem loading DLLs but I can't figure out what's different running under
mod_perl.  The machine is running:
   ActiveState perl 5.6.1 build 633
   Apache 1.3.26 (prebuilt)
   mod_perl 1.27_01-dev (Randy Kobe's build)
   DBD-Oracle8 (ActiveState ppm)

>From "perl -de 0" on the command line (abbreviated output):

  DB<1> use DBI;
  DB<2> $dbh = DBI->connect("dbi:Oracle:db","user","passwd");
  DB<3> @rows = $dbh->selectrow_array("select * from dual");
  DB<4> x @rows
0  'X'
  DB<5> x $ENV{PATH}
0  'C:\\Perl\\bin\\;C:\\WINNT\\system32;C:\\WINNT;
    C:\\WINNT\\System32\\Wbem;
    C:\\Program Files\\Common Files\\Adaptec Shared\\System;
    C:\\apps\\orant\\bin'

When I do the same thing in my handler (nothing in startup.pl), the first
request generates this error log message:

[Wed Oct 30 17:15:00 2002] [error] install_driver(Oracle) failed: Can't
load 'C:/Perl/site/lib/auto/DBD/Oracle/Oracle.dll' for module DBD::Oracle:
load_file:The specified module could not be found at
C:/Perl/lib/DynaLoader.pm line 206. Compilation failed in require at (eval
14) line 3.
Perhaps a required shared library or dll isn't installed where expected

and all subsequent requests generate these error log messages:

Use of inherited AUTOLOAD for non-method DBD::Oracle::ORA_OCI() is
deprecated at C:/Perl/site/lib/DBD/Oracle.pm line 48.
[Wed Oct 30 17:16:21 2002] [error] DBD::Oracle initialisation failed:
Can't locate auto/DBD/Oracle/ORA_OCI.al in @INC (@INC contains:
C:/Perl/lib C:/Perl/site/lib c:/apache/ c:/apache/lib/perl) at
C:/Perl/site/lib/DBD/Oracle.pm line 48

I've verified that the PATH in my handler matches what I see at the
prompt, and I know Oracle.dll exists.  Occasionally (but not consistently)
Apache.exe will pop up an error dialog saying it couldn't find OCI.dll or
OCIW32.dll in my PATH, but the PATH it shows me in that dialog includes
C:\apps\orant\bin and those DLLs are in there.

Any help appreciated!

Thanks!
Larry Leszczynski
larryl@furph.com


Re: DBD::Oracle/Windows2000 OK from prompt, not mod_perl?

Posted by Larry Leszczynski <la...@furph.com>.
> > > >I'm having a problem on Windows 2000 where DBD::Oracle works fine from
> > > >perl on the command prompt but not from inside mod_perl.  I think it is a
> > > >problem loading DLLs but I can't figure out what's different running under
> > > >mod_perl.

I started making progress after taking Randy's suggestion and copying the
DLLs into my Apache directory just to see what happened.  The Oracle
client was originally installed on a mapped network drive, once I moved it
to my local drive and pointed ORACLE_HOME to that location it worked fine.
Not sure why Apache would have trouble finding DLLs on a network drive but
not on a local drive, but it works now so I'm happy.  Thanks for the help
guys!

Larry



Re: DBD::Oracle/Windows2000 OK from prompt, not mod_perl?

Posted by Randy Kobes <ra...@theoryx5.uwinnipeg.ca>.
On Wed, 30 Oct 2002, Larry Leszczynski wrote:

> Hi Perrin -
> 
> > >I'm having a problem on Windows 2000 where DBD::Oracle works fine from
> > >perl on the command prompt but not from inside mod_perl.  I think it is a
> > >problem loading DLLs but I can't figure out what's different running under
> > >mod_perl.  The machine is running:
> > >   ActiveState perl 5.6.1 build 633
> > >   Apache 1.3.26 (prebuilt)
> > >   mod_perl 1.27_01-dev (Randy Kobe's build)
> > >   DBD-Oracle8 (ActiveState ppm)
> > >
> > 
> > You can't just mix and match like that.  Modules that you want to use 
> > under mod_perl have to be built against the same perl that mod_perl was 
> > built with.  If there is a DBD::Oracle with Randy's distro, use it. 
> >  Otherwise, you need to build DBD::Oracle with the same perl he used, or 
> > build mod_perl with ActiveState 633.
> 
> Hmmm, I was hoping that was not the case - all my other mod_perl stuff
> works fine, including libapreq stuff and SOAP::Lite, but maybe just by
> coincidence...
> 
> Hey Randy, do you happen to have a DBD-Oracle build?

I don't, but I thought that compatibility shouldn't be a problem
in this context. I know it's getting confusing a bit with all the
different versions, but the mod_perl-1.27 ppm package I compiled
with an ActiveState 633 compatible Perl against Apache-1.3.27,
which matches the versions of stuff you list above ...

>From your earlier message, it seemed to be having a problem
finding certain dlls ... Just to test things, if you temporarily
copy these dlls to a "standard" location in your PATH, does that
help? Or, in your script/handler, or in a startup file, if you
explicitly set $ENV{PATH} to include where the Oracle dlls are,
does that work? And, finally, does Oracle need any special
environment variables that may be visible at a command prompt
that aren't being passed to the mod_perl environment?

-- 
best regards,
randy


Re: DBD::Oracle/Windows2000 OK from prompt, not mod_perl?

Posted by Larry Leszczynski <la...@furph.com>.
Hi Perrin -

> >I'm having a problem on Windows 2000 where DBD::Oracle works fine from
> >perl on the command prompt but not from inside mod_perl.  I think it is a
> >problem loading DLLs but I can't figure out what's different running under
> >mod_perl.  The machine is running:
> >   ActiveState perl 5.6.1 build 633
> >   Apache 1.3.26 (prebuilt)
> >   mod_perl 1.27_01-dev (Randy Kobe's build)
> >   DBD-Oracle8 (ActiveState ppm)
> >
> 
> You can't just mix and match like that.  Modules that you want to use 
> under mod_perl have to be built against the same perl that mod_perl was 
> built with.  If there is a DBD::Oracle with Randy's distro, use it. 
>  Otherwise, you need to build DBD::Oracle with the same perl he used, or 
> build mod_perl with ActiveState 633.

Hmmm, I was hoping that was not the case - all my other mod_perl stuff
works fine, including libapreq stuff and SOAP::Lite, but maybe just by
coincidence...

Hey Randy, do you happen to have a DBD-Oracle build?

(Btw, Randy deserves major kudos for maintaining his stuff at
theory5x.winnipeg.ca!)


Thanks,
Larry Leszczynski
larryl@furph.com



Re: DBD::Oracle/Windows2000 OK from prompt, not mod_perl?

Posted by Perrin Harkins <pe...@elem.com>.
Larry Leszczynski wrote:

>I'm having a problem on Windows 2000 where DBD::Oracle works fine from
>perl on the command prompt but not from inside mod_perl.  I think it is a
>problem loading DLLs but I can't figure out what's different running under
>mod_perl.  The machine is running:
>   ActiveState perl 5.6.1 build 633
>   Apache 1.3.26 (prebuilt)
>   mod_perl 1.27_01-dev (Randy Kobe's build)
>   DBD-Oracle8 (ActiveState ppm)
>

You can't just mix and match like that.  Modules that you want to use 
under mod_perl have to be built against the same perl that mod_perl was 
built with.  If there is a DBD::Oracle with Randy's distro, use it. 
 Otherwise, you need to build DBD::Oracle with the same perl he used, or 
build mod_perl with ActiveState 633.

- Perrin