Hi, I've been hacking at this a couple days. At first I really wanted to get mod_perl working as a DSO. Got everything compiled, and added lines to httpd.conf. Died on startup if I had AddModule mod_perl.c. Following a tip on this list, I gave up on DSO and went static compile. Here is what I did.
1) Modified php build to NOT use its own mysql module: make clean rm config.cache ./configure --with-apxs=/web/httpd/bin/apxs --enable-track-vars --with-mysql=/usr/local/mysql make make install 2) Build mod_perl perl Makefile.PL APACHE_SRC=/usr/local/src/apache_1.3.19/src DO_HTTPD=1 USE_APACI=1 PREP_HTTPD=1 EVERYTHING=1 -Ubincompat5005 USE_DSO=1 make make install 3) Build apache env LIBS=/usr/lib/libC.so.5 CFLAGS=-fPIC ./configure --prefix=/web/httpd --enable-shared=max --enable-module=so --activate-module=src/modules/perl/libperl.a make make install Server version: Apache/1.3.19 (Unix) Server built: Mar 27 2002 22:22:11 /web/httpd/bin/httpd -l Compiled-in modules: http_core.c mod_so.c mod_perl.c suexec: disabled; invalid wrapper /web/httpd/bin/suexec # http -L output follows the perl -V output. BTW: I did redo perl to remove the malloc problem. # perl -V Summary of my perl5 (revision 5.0 version 6 subversion 1) configuration: Platform: osname=solaris, osvers=2.8, archname=sun4-solaris uname='sunos home.primechoice.com 5.8 generic_108528-03 sun4u sparc sunw,ultra-5_10 ' config_args='-Ubincompat5005' hint=previous, useposix=true, d_sigaction=define usethreads=undef use5005threads=undef useithreads=undef usemultiplicity=undef useperlio=undef d_sfio=undef uselargefiles=define usesocks=undef use64bitint=undef use64bitall=undef uselongdouble=undef Compiler: cc='gcc', ccflags ='-fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64', optimize='-O', cppflags='-fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' ccversion='', gccversion='2.95.3 20010315 (release)', gccosandvers='solaris2.8' intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=4321 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16 ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8 alignbytes=8, usemymalloc=n, prototype=define Linker and Libraries: ld='gcc', ldflags =' -L/usr/local/lib ' libpth=/usr/local/lib /usr/lib /usr/ccs/lib libs=-lsocket -lnsl -lgdbm -ldl -lm -lc perllibs=-lsocket -lnsl -ldl -lm -lc libc=/lib/libc.so, so=so, useshrplib=true, libperl=libperl.a Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags=' -R /usr/local/lib/perl5/5.6.1/sun4-solaris/CORE' cccdlflags='-fPIC', lddlflags='-G -L/usr/local/lib' Characteristics of this binary (from libperl): Compile-time options: USE_LARGE_FILES Built under solaris Compiled at Mar 27 2002 17:45:01 @INC: /usr/local/lib/perl5/5.6.1/sun4-solaris /usr/local/lib/perl5/5.6.1 /usr/local/lib/perl5/site_perl/5.6.1/sun4-solaris /usr/local/lib/perl5/site_perl/5.6.1 /usr/local/lib/perl5/site_perl . httpd -L /web/httpd/bin/httpd -L <Directory (http_core.c) Container for directives affecting resources located in the specified directories Allowed in *.conf only outside <Directory>, <Files> or <Location> </Directory> (http_core.c) Marks end of <Directory> Allowed in *.conf only inside <Directory>, <Files> or <Location> <Location (http_core.c) Container for directives affecting resources accessed through the specified URL paths Allowed in *.conf only outside <Directory>, <Files> or <Location> </Location> (http_core.c) Marks end of <Location> Allowed in *.conf only inside <Directory>, <Files> or <Location> <VirtualHost (http_core.c) Container to map directives to a particular virtual host, takes one or more host addresses Allowed in *.conf only outside <Directory>, <Files> or <Location> </VirtualHost> (http_core.c) Marks end of <VirtualHost> Allowed in *.conf only outside <Directory>, <Files> or <Location> <Files (http_core.c) Container for directives affecting files matching specified patterns Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None </Files> (http_core.c) Marks end of <Files> Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None <Limit (http_core.c) Container for authentication directives when accessed using specified HTTP methods Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None </Limit> (http_core.c) Marks end of <Limit> Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None <LimitExcept (http_core.c) Container for authentication directives to be applied when any HTTP method other than those specified is used to access the resource Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None </LimitExcept> (http_core.c) Marks end of <LimitExcept> Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None <IfModule (http_core.c) Container for directives based on existance of specified modules Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None </IfModule> (http_core.c) Marks end of <IfModule> Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None <IfDefine (http_core.c) Container for directives based on existance of command line defines Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None </IfDefine> (http_core.c) Marks end of <IfDefine> Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None <DirectoryMatch (http_core.c) Container for directives affecting resources located in the specified directories Allowed in *.conf only outside <Directory>, <Files> or <Location> </DirectoryMatch> (http_core.c) Marks end of <DirectoryMatch> Allowed in *.conf only inside <Directory>, <Files> or <Location> <LocationMatch (http_core.c) Container for directives affecting resources accessed through the specified URL paths Allowed in *.conf only outside <Directory>, <Files> or <Location> </LocationMatch> (http_core.c) Marks end of <LocationMatch> Allowed in *.conf only inside <Directory>, <Files> or <Location> <FilesMatch (http_core.c) Container for directives affecting files matching specified patterns Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None </FilesMatch> (http_core.c) Marks end of <FilesMatch> Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None AuthType (http_core.c) An HTTP authorization type (e.g., "Basic") Allowed in *.conf only inside <Directory>, <Files> or <Location> and in .htaccess when AllowOverride includes AuthConfig AuthName (http_core.c) The authentication realm (e.g. "Members Only") Allowed in *.conf only inside <Directory>, <Files> or <Location> and in .htaccess when AllowOverride includes AuthConfig Require (http_core.c) Selects which authenticated users or groups may access a protected space Allowed in *.conf only inside <Directory>, <Files> or <Location> and in .htaccess when AllowOverride includes AuthConfig Satisfy (http_core.c) access policy if both allow and require used ('all' or 'any') Allowed in *.conf only inside <Directory>, <Files> or <Location> and in .htaccess when AllowOverride includes AuthConfig AddDefaultCharset (http_core.c) The name of the default charset to add to any Content-Type without one or 'Off' to disable Allowed in *.conf anywhere and in .htaccess when AllowOverride includes FileInfo AccessFileName (http_core.c) Name(s) of per-directory config files (default: .htaccess) Allowed in *.conf only outside <Directory>, <Files> or <Location> DocumentRoot (http_core.c) Root directory of the document tree Allowed in *.conf only outside <Directory>, <Files> or <Location> ErrorDocument (http_core.c) Change responses for HTTP errors Allowed in *.conf anywhere and in .htaccess when AllowOverride includes FileInfo AllowOverride (http_core.c) Controls what groups of directives can be configured by per-directory config files Allowed in *.conf only inside <Directory>, <Files> or <Location> Options (http_core.c) Set a number of attributes for a given directory Allowed in *.conf anywhere and in .htaccess when AllowOverride includes Options DefaultType (http_core.c) the default MIME type for untypable files Allowed in *.conf anywhere and in .htaccess when AllowOverride includes FileInfo ServerType (http_core.c) 'inetd' or 'standalone' Allowed in *.conf only outside <Directory>, <Files> or <Location> Port (http_core.c) A TCP port number Allowed in *.conf only outside <Directory>, <Files> or <Location> HostnameLookups (http_core.c) "on" to enable, "off" to disable reverse DNS lookups, or "double" to enable double-reverse DNS lookups Allowed in *.conf anywhere User (http_core.c) Effective user id for this server Allowed in *.conf only outside <Directory>, <Files> or <Location> Group (http_core.c) Effective group id for this server Allowed in *.conf only outside <Directory>, <Files> or <Location> ServerAdmin (http_core.c) The email address of the server administrator Allowed in *.conf only outside <Directory>, <Files> or <Location> ServerName (http_core.c) The hostname of the server Allowed in *.conf only outside <Directory>, <Files> or <Location> ServerSignature (http_core.c) En-/disable server signature (on|off|email) Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None ServerRoot (http_core.c) Common directory of server-related files (logs, confs, etc.) Allowed in *.conf only outside <Directory>, <Files> or <Location> ErrorLog (http_core.c) The filename of the error log Allowed in *.conf only outside <Directory>, <Files> or <Location> PidFile (http_core.c) A file for logging the server process ID Allowed in *.conf only outside <Directory>, <Files> or <Location> ScoreBoardFile (http_core.c) A file for Apache to maintain runtime process management information Allowed in *.conf only outside <Directory>, <Files> or <Location> LockFile (http_core.c) The lockfile used when Apache needs to lock the accept() call Allowed in *.conf only outside <Directory>, <Files> or <Location> AccessConfig (http_core.c) The filename of the access config file Allowed in *.conf only outside <Directory>, <Files> or <Location> ResourceConfig (http_core.c) The filename of the resource config file Allowed in *.conf only outside <Directory>, <Files> or <Location> ServerAlias (http_core.c) A name or names alternately used to access the server Allowed in *.conf only outside <Directory>, <Files> or <Location> ServerPath (http_core.c) The pathname the server can be reached at Allowed in *.conf only outside <Directory>, <Files> or <Location> Timeout (http_core.c) Timeout duration (sec) Allowed in *.conf only outside <Directory>, <Files> or <Location> KeepAliveTimeout (http_core.c) Keep-Alive timeout duration (sec) Allowed in *.conf only outside <Directory>, <Files> or <Location> MaxKeepAliveRequests (http_core.c) Maximum number of Keep-Alive requests per connection, or 0 for infinite Allowed in *.conf only outside <Directory>, <Files> or <Location> KeepAlive (http_core.c) Whether persistent connections should be On or Off Allowed in *.conf only outside <Directory>, <Files> or <Location> IdentityCheck (http_core.c) Enable identd (RFC 1413) user lookups - SLOW Allowed in *.conf anywhere ContentDigest (http_core.c) whether or not to send a Content-MD5 header with each request Allowed in *.conf anywhere and in .htaccess when AllowOverride includes Options UseCanonicalName (http_core.c) How to work out the ServerName : Port when constructing URLs Allowed in *.conf anywhere StartServers (http_core.c) Number of child processes launched at server startup Allowed in *.conf only outside <Directory>, <Files> or <Location> MinSpareServers (http_core.c) Minimum number of idle children, to handle request spikes Allowed in *.conf only outside <Directory>, <Files> or <Location> MaxSpareServers (http_core.c) Maximum number of idle children Allowed in *.conf only outside <Directory>, <Files> or <Location> MaxServers (http_core.c) Deprecated equivalent to MaxSpareServers Allowed in *.conf only outside <Directory>, <Files> or <Location> ServersSafetyLimit (http_core.c) Deprecated equivalent to MaxClients Allowed in *.conf only outside <Directory>, <Files> or <Location> MaxClients (http_core.c) Maximum number of children alive at the same time Allowed in *.conf only outside <Directory>, <Files> or <Location> MaxRequestsPerChild (http_core.c) Maximum number of requests a particular child serves before dying. Allowed in *.conf only outside <Directory>, <Files> or <Location> RLimitCPU (http_core.c) Soft/hard limits for max CPU usage in seconds Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None RLimitMEM (http_core.c) Soft/hard limits for max memory usage per process Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None RLimitNPROC (http_core.c) soft/hard limits for max number of processes per uid Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None BindAddress (http_core.c) '*', a numeric IP address, or the name of a host with a unique IP address Allowed in *.conf only outside <Directory>, <Files> or <Location> Listen (http_core.c) A port number or a numeric IP address and a port number Allowed in *.conf only outside <Directory>, <Files> or <Location> SendBufferSize (http_core.c) Send buffer size in bytes Allowed in *.conf only outside <Directory>, <Files> or <Location> AddModule (http_core.c) The name of a module Allowed in *.conf only outside <Directory>, <Files> or <Location> ClearModuleList (http_core.c) Allowed in *.conf only outside <Directory>, <Files> or <Location> ThreadsPerChild (http_core.c) Number of threads a child creates Allowed in *.conf only outside <Directory>, <Files> or <Location> ExcessRequestsPerChild (http_core.c) Maximum number of requests a particular child serves after it is ready to die. Allowed in *.conf only outside <Directory>, <Files> or <Location> ListenBacklog (http_core.c) Maximum length of the queue of pending connections, as used by listen(2) Allowed in *.conf only outside <Directory>, <Files> or <Location> CoreDumpDirectory (http_core.c) The location of the directory Apache changes to before dumping core Allowed in *.conf only outside <Directory>, <Files> or <Location> Include (http_core.c) Name of the config file to be included Allowed in *.conf anywhere LogLevel (http_core.c) Level of verbosity in error logging Allowed in *.conf only outside <Directory>, <Files> or <Location> NameVirtualHost (http_core.c) A numeric IP address:port, or the name of a host Allowed in *.conf only outside <Directory>, <Files> or <Location> ServerTokens (http_core.c) Tokens displayed in the Server: header - Min[imal], OS, Prod[uctOnly], Full Allowed in *.conf only outside <Directory>, <Files> or <Location> LimitRequestLine (http_core.c) Limit on maximum size of an HTTP request line Allowed in *.conf only outside <Directory>, <Files> or <Location> LimitRequestFieldsize (http_core.c) Limit on maximum size of an HTTP request header field Allowed in *.conf only outside <Directory>, <Files> or <Location> LimitRequestFields (http_core.c) Limit (0 = unlimited) on max number of header fields in a request message Allowed in *.conf only outside <Directory>, <Files> or <Location> LimitRequestBody (http_core.c) Limit (in bytes) on maximum size of request message body Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None LoadModule (mod_so.c) a module name and the name of a shared object file to load it from Allowed in *.conf only outside <Directory>, <Files> or <Location> LoadFile (mod_so.c) shared object file or library to load into the server at runtime Allowed in *.conf only outside <Directory>, <Files> or <Location> <Perl> (mod_perl.c) Perl code Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None </Perl> (mod_perl.c) End Perl code Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None =pod (mod_perl.c) Start of POD Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None =back (mod_perl.c) End of =over Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None =cut (mod_perl.c) End of POD Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None __END__ (mod_perl.c) Stop reading config Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None PerlFreshRestart (mod_perl.c) Tell mod_perl to reload modules and flush Apache::Registry cache on restart Allowed in *.conf only outside <Directory>, <Files> or <Location> PerlTaintCheck (mod_perl.c) Turn on -T switch Allowed in *.conf only outside <Directory>, <Files> or <Location> PerlWarn (mod_perl.c) Turn on -w switch Allowed in *.conf only outside <Directory>, <Files> or <Location> PerlScript (mod_perl.c) this directive is deprecated, use `PerlRequire' Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None PerlRequire (mod_perl.c) A Perl script name, pulled in via require Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None PerlModule (mod_perl.c) List of Perl modules Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None PerlSetVar (mod_perl.c) Perl config var and value Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None PerlAddVar (mod_perl.c) Perl config var and value Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None PerlSetEnv (mod_perl.c) Perl %ENV key and value Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None PerlPassEnv (mod_perl.c) pass environment variables to %ENV Allowed in *.conf only outside <Directory>, <Files> or <Location> PerlSendHeader (mod_perl.c) Tell mod_perl to parse and send HTTP headers Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None PerlSetupEnv (mod_perl.c) Tell mod_perl to setup %ENV by default Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None PerlHandler (mod_perl.c) the Perl handler routine name Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None PerlTransHandler (mod_perl.c) the Perl Translation handler routine name Allowed in *.conf only outside <Directory>, <Files> or <Location> PerlAuthenHandler (mod_perl.c) the Perl Authentication handler routine name Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None PerlAuthzHandler (mod_perl.c) the Perl Authorization handler routine name Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None PerlAccessHandler (mod_perl.c) the Perl Access handler routine name Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None PerlTypeHandler (mod_perl.c) the Perl Type check handler routine name Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None PerlFixupHandler (mod_perl.c) the Perl Fixup handler routine name Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None PerlLogHandler (mod_perl.c) the Perl Log handler routine name Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None PerlCleanupHandler (mod_perl.c) the Perl Cleanup handler routine name Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None PerlInitHandler (mod_perl.c) the Perl Init handler routine name Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None PerlHeaderParserHandler (mod_perl.c) the Perl Header Parser handler routine name Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None PerlChildInitHandler (mod_perl.c) the Perl Child init handler routine name Allowed in *.conf only outside <Directory>, <Files> or <Location> PerlChildExitHandler (mod_perl.c) the Perl Child exit handler routine name Allowed in *.conf only outside <Directory>, <Files> or <Location> PerlPostReadRequestHandler (mod_perl.c) the Perl Post Read Request handler routine name Allowed in *.conf only outside <Directory>, <Files> or <Location> PerlDispatchHandler (mod_perl.c) the Perl Dispatch handler routine name Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None PerlRestartHandler (mod_perl.c) the Perl Restart handler routine name Allowed in *.conf only outside <Directory>, <Files> or <Location>