Penguin

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 http://perl.apache.org/docs/2.0/ 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.

Apache2.pm 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 Apache2.pm 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 perl.apache.org's online documentation.