In order to assist folks upgrading we are now going to
maintain a document describing information critical to existing
Apache users. Note that it only lists differences between
recent major releases, so for example, folks using Apache 1.1
or earlier will have to figure out what changed up to Apache
1.2 before this document can be considered relevant. Old users
could look at the
src/CHANGES file which tracks
These are intended to be brief notes, and you should be able
to find more information in either the New Features document, or in
Moduledirective has been changed to the
EXTRA_LFLAGShas been renamed
-DMAXIMUM_DNSdefinition has been obsoleted by changes to
mod_accessenforcing double-reverse DNS lookups when necessary.
-DSERVER_SUBVERSION=\"string\"compile-time option has been replaced with the run-time API call
ap_add_version_component(). Compile-time modification of the server identity by the configuration scripts is no longer supported.
mod_dirhas been split into two pieces
mod_browserhas been replaced by
suexec, or adding
EXTRA_CFLAGS. This is slower, more information is available on the performance tuning page. There is a mild denial of service attack possible with the default config, but the default config is an order of magnitude faster.
mod_auth_msqlhas been removed from the distribution.
mod_expireswill add Expires headers to content that does not come from a file on disk, unless you are using a modification time based setting. Previously, it would never add an Expires header unless content came from a file on disk. This could result in Expires headers being added in places where they were not previously added.
AuthName This and Thatyou will need to change it to
AuthName "This and That"This change was made for consistency in the config language.
Unrecognized method names in the server configuration files will result in the server logging an error message and failing to start. In .htaccess files, unknown methods will cause the server to log an error to its error log and return an 'Internal Server Error' page to the client.
NameVirtualHostdirective (one directive per pair). Previously this support was given implicitly on the "main server address". Now it has to be explicitly listed so as to avoid many problems that users had. Please see the Apache Virtual Host documentation for further details on configuration.
HostnameLookupsdefaults to Off.
mod_accesssyntax "allow user-agents" was removed. The replacement is the more general "allow from env".
<Directory>directives, for example.
TransferLogdirective is given then nothing will be logged. (Previously it would default to
ServerType inetdhas been deprecated. It still exists, but bugs are unlikely to be fixed.
httpd_monitorhas been deprecated. The replacement is to use
mod_statusand make a request to a URL such as
"nph-" CGIs, which formerly provided a direct socket to the client without any server post-processing, were not fully compatible with HTTP/1.1 or SSL support. As such they would have had to implement the transport details, such as encryption or chunking, in order to work properly in certain situations. Now, the only difference between nph and non-nph scripts is "non-parsed headers".
dbmmanagehas been overhauled.
The following changes between the 1.2 and 1.3 API may require slight changes in third party modules not maintained by Apache.
ap_' was globally applied to the following classes of symbols: Apache provided general functions (e.g.,
ap_cpystrn), public API functions (e.g.,
bgets) and private functions which can't be made static (because of cross-object usage) but should be (e.g.,
new_connection). For backward source compatibility with Apache 1.2 a new header file named
compat.hwas created which provides defines for the old symbol names. You'll either have to
#include compat.hor update the API symbols you use.
const char *ap_get_server_version().
ap_construct_urlprototype change. The second parameter was previously a
server_rec, it has been changed to a
tabledatatype has been made an opaque type. Code which assumes a
tableis the same as an
array_headerwill not compile. This is actually a change to enforce the API the way it was intended, all versions of Apache have had a
table_elts()function which is intended for code which needs to access the elements of a table. The changes required for this are pretty easy, and work with all versions of Apache.
t is a table. Whenever code refers
t->elts, replace it with something like
Whenever code refers toarray_header *arr = table_elts(t); table_entry *elts = (table_entry *)arr->elts;
arr->nelts. Many examples can be found in the standard modules, search for