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
code changes.
These are intended to be brief notes, and you should be able
to find more information in either the New Features document, or in
the src/CHANGES
file.
Module
directive has been changed to the
AddModule
directive.Configuration
variable
EXTRA_LFLAGS
has been renamed
EXTRA_LDFLAGS
.-DMAXIMUM_DNS
definition has been
obsoleted by changes to mod_access
enforcing
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_dir
has been split into two pieces
mod_autoindex
, and
mod_dir
.mod_browser
has
been replaced by mod_setenvif
.suexec
, or adding
-DUSE_FCNTL_SERIALIZED_ACCEPT
to
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_msql
has been removed from the
distribution.mod_expires
will
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.
NameVirtualHost
directive (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.HostnameLookups
defaults to Off.mod_access
syntax
"allow user-agents" was removed. The replacement is the more
general "allow from env".<Directory>
directives, for example.TransferLog
directive is given then
nothing will be logged. (Previously it would default to
logs/access_log
.)ServerType inetd
has been deprecated. It
still exists, but bugs are unlikely to be fixed.httpd_monitor
has been deprecated. The
replacement is to use mod_status
and make a
request to a URL such as
http://myhost/server-status?refresh=10
."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".
dbmmanage
has 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., palloc
, 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.h
was created which provides defines for
the old symbol names. You'll either have to #include
compat.h
or update the API symbols you use.const char *ap_get_server_version()
.ap_construct_url
prototype change. The
second parameter was previously a server_rec
, it
has been changed to a request_rec
.table
datatype has been made an opaque
type. Code which assumes a table
is the same
as an array_header
will 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.
Suppose t
is a table. Whenever code refers
to t->elts
, replace it with something like
this:
Whenever code refers toarray_header *arr = table_elts(t); table_entry *elts = (table_entry *)arr->elts;
t->nelts
use
arr->nelts
. Many examples can be found in
the standard modules, search for table_elts
.