group29 has asked for the wisdom of the Perl Monks concerning the following question:

Howdy...

I've been searching high and low for answer to this conundrum. I've found quite a few references to the problem, but no solutions so far.

I am running:

RedHat 5.2,
Linux Kernel 2.2.18 #2,
Apache 1.3.14
Perl 5.00502, (complied on the box replacing the default install)
(I also have run the H2PH converter, but might have missed an include directory.)
mod_perl (via DSO) version 1.25
gcc version 2.7.2.3
(I do not have embed perl installed.)

I've used CPAN to install the latest and greatest Bundle::DBI as well as Bundle::Apache.

I'm trying to run mod_perl as a DSO under Apache 1.3.14. (I can successfully run Perl CGI scripts that use good olde regular DBI.)

Here is the error message:

Syntax error on line 1226 of /web/apache/conf/httpd.conf:
Can't load '/usr/lib/perl5/site_perl/5.005/i686-linux/auto/DBI/DBI.so'
for module DBI:
/usr/lib/perl5/site_perl/5.005/i686-linux/auto/DBI/DBI.so:
undefined symbol: PL_dowarn at
/usr/lib/perl5/5.00502/i686-linux/DynaLoader.pm line 168.

at /usr/lib/perl5/site_perl/5.005/i686-linux/DBI.pm line 182
BEGIN failed--compilation aborted at
/usr/lib/perl5/site_perl/5.005/i686-linux/DBI.pm line 182.
BEGIN failed--compilation aborted at
/usr/lib/perl5/site_perl/5.005/Apache/DBI.pm line 4.

What other info might anyone need to help me solve this? Recommendations and ideas appreciated.

Replies are listed 'Best First'.
Re: undefined symbol: PL_dowarn
by baku (Scribe) on Mar 20, 2001 at 03:10 UTC

    Taking a stab in the dark: it sounds as if your mod_perl and/or Apache and/or perl were not compiled in a compatible way. One wiser than I could probably give you more detail, but I'd assume that if you "rolled your own" perl, that perhaps one of the following is happening:

    • The versions of perl / libperl / mod_perl mismatch
    • libperl is not on the LD_LIBRARY_PATH (or see /etc/ld.so.conf) of Apache (thus mod_perl)

    One test might be to invoke perl directly and see if DBI.pm can be used from the shell, ie. run some DBI-based script interactively and look for similar errors.