Scroll to navigation

libapache2-mod-perl2-2.0.11::docs::api::Apache2::Module(3pm) User Contributed Perl Documentation libapache2-mod-perl2-2.0.11::docs::api::Apache2::Module(3pm)


Apache2::Module - Perl API for creating and working with Apache modules


  use Apache2::Module ();
  #Define a configuration directive
  my @directives = (
          name => 'MyDirective',
  Apache2::Module::add(__PACKAGE__, \@directives);
  # iterate over the whole module list
  for (my $modp = Apache2::Module::top_module(); $modp; $modp = $modp->next) {
      my $name                  = $modp->name;
      my $index                 = $modp->module_index;
      my $ap_api_major_version  = $modp->ap_api_major_version;
      my $ap_api_minor_version  = $modp->ap_api_minor_version;
      my $commands              = $modp->cmds;
  # find a specific module
  my $module = Apache2::Module::find_linked_module('mod_ssl.c');
  # remove a specific module
  # access module configuration from a directive
  sub MyDirective {
      my ($self, $parms, $args) = @_;
      my  $srv_cfg = Apache2::Module::get_config($self, $parms->server);
  # test if an Apache module is loaded
  if (Apache2::Module::loaded('mod_ssl.c')) {
  # test if a Perl module is loaded
  if (Apache2::Module::loaded('Apache2::Status')) {


"Apache2::Module" provides the Perl API for creating and working with Apache modules

See Apache Server Configuration Customization in Perl.


"Apache2::Module" provides the following functions and/or methods:


Add a module's custom configuration directive to Apache.

  Apache2::Module::add($package, $cmds);
the package of the module to add
the list of configuration directives to add

See also Apache Server Configuration Customization in Perl.


Get the httpd API version this module was build against, not the module's version.

  $major_version = $module->ap_api_major_version();

This methid is used to check that module is compatible with this version of the server before loading it.


Get the module API minor version.

  $minor_version = $module->ap_api_minor_version();

"ap_api_minor_version()" provides API feature milestones.

It's not checked during module init.


Get the "Apache2::Command" object, describing all of the directives this module defines.

  $command = $module->cmds();


Retrieve a module's configuration. Used by configuration directives.

  $cfg = Apache2::Module::get_config($class, $server, $dir_config);
  $cfg = Apache2::Module::get_config($class, $server);
  $cfg =          $self->get_config($server, $dir_config);
  $cfg =          $self->get_config($server);
The Perl package this configuration is for
The current server, typically "$r->server" or "$parms->server".
By default, the configuration returned is the server level one. To retrieve the per directory configuration, use "$r->per_dir_config" as a last argument.
A reference to the hash holding the module configuration data.

See also Apache Server Configuration Customization in Perl.


Find a module based on the name of the module

  $module = Apache2::Module::find_linked_module($name);
The name of the module ending in ".c"
The module object if found, "undef" otherwise.

For example:

  my $module = Apache2::Module::find_linked_module('mod_ssl.c');


Determine if a certain module is loaded

  $loaded = Apache2::Module::loaded($module);
The name of the module to search for.

If $module ends with ".c", search all the modules, statically compiled and dynamically loaded.

If $module ends with ".so", search only the dynamically loaded modules.

If $module doesn't contain a ".", search the loaded Perl modules (checks %INC).

Returns true if the module is loaded, false otherwise.

For example, to test if this server supports ssl:

  if (Apache2::Module::loaded('mod_ssl.c')) {

To test is this server dynamically loaded mod_perl:

  if (Apache2::Module::loaded('')) {

To test if "Apache2::Status" is loaded:

  if (Apache2::Module::loaded('Apache2::Status')) {


Get the index to this modules structures in config vectors.

  $index = $module->module_index();


Get the name of the module's .c file

  $name = $module->name();

For example a mod_perl module, will return: mod_perl.c.


Get the next module in the list, "undef" if this is the last module in the list.

  $next_module = $module->next();


Remove a module from the list of loaded modules permanently.



Returns the first module in the module list. Useful to start a module iteration.

  $module = Apache2::Module::top_module();

See Also

mod_perl 2.0 documentation.


mod_perl 2.0 and its core modules are copyrighted under The Apache Software License, Version 2.0.


The mod_perl development team and numerous contributors.

2021-02-22 perl v5.32.1