When using an Apache web server, a user must understand what modules he or she is running. These modules account for the vast majority of an Apache server’s functionality, so even the smallest issues or module failures can create a serious detriment to the server’s ability to perform.
Understanding Static and Shared Modules
Static modules are already built into the Apache executable when the server is compiled, meaning that they are always available
Shared modules are modules that get loaded into the server at run time by a LoadModule directive within Apache’s configuration file. Because these modules are not already built in to the server, they may be installed on a machine but not actually loaded into Apache. If this is the case, the modules are not usable. Missed connections with shared modules are one of the most common reasons Apache servers experience performance failures.
Understanding the Issue
One very common error message Apache users receive upon Start is the “Invalid Command.” If the error message itself includes the warning “perhaps misspelled or defined by a module not included in the server configuration,” there’s a good chance that a required shared module has not been properly loaded into Apache (remember, this happens at run time).
Correcting the Issue
The first step in correcting this issue is verifying that the Apache configuration file is in a usable state. If all files aren’t in this state the user will not be able to complete his or her desired function. One temporary fix for configuration issues can be made using the hash character (#), which turns a line into a comment when placed at the start of that line. Others include the <IfDefine> directive and the “a2dissite” command provided on Debian-based systems.
Remember, loading only static modules provides incomplete information that may not provide the solution when troubleshooting. A configuration file must be used to determine all shared modules.
To begin building your list of loaded Apache modules, use the command “apachect1.” On a Debian-based system running Apache 2, the command will actually be “apache2ct1.”
This should output a list that provides all loaded modules – both static and shared – so that you are able to view your list of modules in its entirety. This output also denotes whether each specific module is static or shared.