Apache2 and mod_perl

The version of mod_perl for apache2 in Sarge (libapache2-mod-perl2) is 1.999.21.

Only a short while after Sarge was released, mod_perl version 2.0 was released. Unfortunately, its behaviour changed in some significant ways, and the documentation on reflects this stable version. So if you are using Sarge and apache2 and mod_perl, you have some poorly documented features and mis-features. Wonderful. Instead, you can have hours of fun trying to figure everything out for yourself.

mod_perl and DirectoryIndex

[error] [client x.x.x.x] Attempt to serve directory: /var/www/path/to/directory/

This version of mod_perl for apache2 screws up DirectoryIndex directives, since perl gets the request for the directory before mod_dir gets a chance. I suggest using mod_rewrite or a redirect instead. See this thread for an explanation.

There is a fix you can do by loading your own handler into mod_perl for handling directories - this post in the above thread uses this solution. module

This version (1.999.21) of mod_perl expects you to do

use Apache2;

and then the old style

use Apache::module;

much the way that mod_perl for apache1 did. This changed in mod_perl 2.0, so that there is no any more, and you should just do

use Apache::module;

This means that you should do

  PerlInitHandler Apache::Reload

in your apache config file, not

  PerlInitHandler Apache2::Reload

as stated in's online documentation.