mod_perl issue on perl upgrade for some distros

We’ve had reports today from a few folks that the lastest OS update caused a problem with the installed mod_perl, which prevented apache from starting up successfully.

The error looks like this when apache tries to start

Undefined symbol Perl_Ippid_ptr in mod_perl.so

You can quickly resolve this by disabling mod_perl (assuming it isn’t needed). Do this by editing the file /etc/httpd/conf.d/perl.conf, and comment out the LoadModule line, so that it looks like this:

#LoadModule perl_module modules/mod_perl.so

Then restart the webserver:

service httpd restart

You can follow these instructions to resolve this permanently, depending on your distro.

On Fedora Core 3:

wget http://updates.interworx.info/fedora/core/3/SRPMS/mod_perl-1.99_16-3.src.rpm
rpmbuild --rebuild mod_perl-1.99_16-3.src.rpm
cd /usr/src/redhat/RPMS/i386
rpm -Uvh mod_perl-*.rpm --force
<uncomment the LoadModule line from /etc/httpd/conf.d/perl.conf, if you have disabled it>
service httpd restart

When/if we discover this problem with more distro’s we’ll update this post.

Paul

Hello Paul,

Thanks for the post - I noticed this error, and after being notified, commented out the LoadModule line, which got the httpd back up & running. Doing a search on G didn’t turn up much apart from back in February where it stated a yum update would have fixed - obviously to no avail.

Anyway, my update wasn’t quite as successful as yours. I had to

#yum install gdbm-devel apr-devel apr-util-devel
#yum install rpm-build

On running:
#rpmbuild --rebuild mod_perl-1.99_16-3.src.rpm

I get:
RPM build errors:
Bad exit status from /var/tmp/rpm-tmp.94272 (%build)

tail’ing that file:
[root@falcon SOURCES]# tail /var/tmp/rpm-tmp.94272
MP_APXS=/usr/sbin/apxs MP_APR_CONFIG=/usr/bin/apr-config
CCFLAGS="$RPM_OPT_FLAGS -fPIC"
make

Run the test suite.

Need to make t/htdocs/perlio because it isn’t expecting to be run as

root and will fail tests that try and write files because the server

will have changed it’s uid.

Any ideas?

Cheers.

Your server is FC3, yes?

Were there any errors above the RPM Build errors: line?

Paul

/usr/bin/ld: cannot find -lexpat
collect2: ld returned 1 exit status
make[3]: *** […/…/…/blib/arch/auto/APR/APR.so] Error 1
make[3]: Leaving directory /usr/src/redhat/BUILD/mod_perl-1.99_16/xs/APR/APR' make[2]: *** [subdirs] Error 2 make[2]: Leaving directory /usr/src/redhat/BUILD/mod_perl-1.99_16/xs/APR’
make[1]: *** [subdirs] Error 2
make[1]: Leaving directory `/usr/src/redhat/BUILD/mod_perl-1.99_16/xs’
make: *** [subdirs] Error 2
error: Bad exit status from /var/tmp/rpm-tmp.29209 (%build)

I have downloaded the expat srpm and ran a rpmbuild on it and still the same error. Yes, its FC3.

Okay, I have grabbed expat-devel and its progressing further.

Sorted - for anyone experiencing similar - make sure expat and expat-devel are installed. This is a new’ish server so this could explain. Thanks for the pointers Paul. :smiley:

Hi all,

By default Mod_perl isn’t an interworx module, isn’t it ? or if it is, it is disabled by default, no ?

Pascal

It’s not pascal, and however your distro has it installed (enabled or not) is how it’s setup.

Chris

I’m still tweaking my Iworx test server with a production site running on them in that clustered pair, just noticed they didn’t have mod perl compared to my other Plesk server that had been running the same scripts with improved performance/stability.

I just installed mod_perl on both Iworx and it seems to be going fairly well now. Just wondering if you left them out for any particular reason on the build/install?

It was just 1 more thing to build/maintain FusionHosting that wasn’t imperative to the system.

Chris

Helo FusionHosting

Do you use Mod_perl to only execute Perl scripts ?
All of your cgi perl ? only one script ?

Is it a problem for you to show me how you add the mod_perl handler in the apache conf file ?

there is no security pbm to allow all perl scripts of all siteworx accounts to be run directly in apache with mod perl ?

Pascal

For this particular cluster it’s only a single perl script.

I’m not aware of there being a special handler entry for the conf file, you just add the LoadModule line into the conf file as the mod_perl instructions say to do.

I’ve checked one of my Plesk servers running 1.99 and it only has the LoadModule line as well, so my guess is Apache passes it off to mod_perl directly.

Well…

Mod_perl is basicly used to create new Apache modules writed in Perl rather than C, that’s all.

You also tell to Mod_perl which Perl script have to be interpreted by Mod_perl (so directly by apache) rather than executing the Perl exe.

For me to allow mod_perl to run existing CGI (writed in perl) you have to add something like

SetHandler perl-script
PerlHandler Apache::Registry

It can be per vhost or for every files name pl or cgi or …

Maybe I completly wrong but look at the mod_perl doc :
http://perl.apache.org/start/index.html
and
http://perl.apache.org/start/tips/registry.html#Running_CGI_scripts_with_mod_perl

But one more time, maybe I completly wrong

Pascal