Suse: Solving the Apache Undefined Symbol issue

Sometimes, you wish you could kill users... But I digress...

You try to restart Apache on a Suse Linux Enterprise 11 machine and you get the following message:

edc2intsvn01:~ # /etc/init.d/apache2 start
Starting httpd2 (prefork) httpd2-prefork: 
Syntax error on line 116 of /etc/apache2/httpd.conf: 
Syntax error on line 28 of /etc/apache2/sysconfig.d/loadmodule.conf: 
Cannot load /usr/lib64/apache2/ into server: /usr/lib64/apache2/ undefined symbol: dav_register_provider

The command line was:
/usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf

Oh sh* what on earth could give you this problem?

Turns out, the answer is fairly simple: in this case, we are trying to start an Apache server to serve SVN (Subversion) content over a Webdav interface.

Yes, I know, not the cleanest configuration, but, heck, what can I say? That's how it was put together. Now, pay attention! ;-)

In this case, the problem is that you should load the following Apache modules in the following order:

  1. mod_dav
  2. dav_svn
  3. authz_svn
  4. authz_default

How to do this? Simply by editing the file named /etc/sysconfig/apache2 and making sure it contains the foloowing line:

APACHE_MODULES="authz_host actions alias auth_basic authz_groupfile authn_file authz_user autoindex cgi dir include log_config mime negot
iation setenvif status userdir asis imagemap php5 mod_dav dav_svn authz_svn authz_default"

PLEASE NOTE The order is important and only /etc/sysconfig/apache2 should be edited.

Save the /etc/sysconfig/apache2 file, restart Apache (with /etc/init.d/apache start for instance) and everything should be OK.

Simple enough, but finding how to do this took me half an hour - I hope this little page will save you time and effort.

See Also: