1 <?xml version='1.0' encoding='UTF-8' ?>
2 <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
3 <?xml-stylesheet type="text/xsl" href="./style/manual.en.xsl"?>
6 Copyright 2002-2004 The Apache Software Foundation
8 Licensed under the Apache License, Version 2.0 (the "License");
9 you may not use this file except in compliance with the License.
10 You may obtain a copy of the License at
12 http://www.apache.org/licenses/LICENSE-2.0
14 Unless required by applicable law or agreed to in writing, software
15 distributed under the License is distributed on an "AS IS" BASIS,
16 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 See the License for the specific language governing permissions and
18 limitations under the License.
21 <manualpage metafile="upgrading.xml.meta">
23 <title>Upgrading to 2.0 from 1.3</title>
26 <p>In order to assist folks upgrading, we maintain a document
27 describing information critical to existing Apache users. These
28 are intended to be brief notes, and you should be able to find
29 more information in either the <a
30 href="new_features_2_0.html">New Features</a> document, or in
31 the <code>src/CHANGES</code> file.</p>
33 <seealso><a href="new_features_2_0.html">Overview of new features in
34 Apache 2.0</a></seealso>
36 <section id="compile-time">
37 <title>Compile-Time Configuration Changes</title>
40 <li>Apache now uses an <code>autoconf</code> and
41 <code>libtool</code> system for <a
42 href="install.html">configuring the build processes</a>.
43 Using this system is similar to, but not the same as, using
44 the APACI system in Apache 1.3.</li>
46 <li>In addition to the usual selection of modules which you
47 can choose to compile, Apache 2.0 has moved the main part of
48 request processing into <a href="mpm.html">Multi-Processing
49 Modules</a> (MPMs).</li>
53 <section id="run-time">
54 <title>Run-Time Configuration Changes</title>
57 <li>Many directives that were in the core server in Apache
58 1.3 are now in the MPMs. If you wish the behavior of the
59 server to be as similar as possible to the behavior of Apache
60 1.3, you should select the <module>prefork</module> MPM. Other MPMs
61 will have different directives to control process creation and request
64 <li>The <a href="mod/mod_proxy.html">proxy module</a> has been
65 revamped to bring it up to HTTP/1.1. Among the important changes,
66 proxy access control is now placed inside a <directive type="section"
67 module="mod_proxy">Proxy</directive> block rather than a
68 <code><Directory proxy:></code> block.</li>
70 <li>The handling of <code>PATH_INFO</code> (trailing path information
71 after the true filename) has changed for some modules. Modules
72 that were previously implemented as a handler but are now
73 implemented as a filter may no longer accept requests with
74 <code>PATH_INFO</code>. Filters such as <a
75 href="mod/mod_include.html">INCLUDES</a> or <a
76 href="http://www.php.net/">PHP</a> are implemented on top
77 of the core handler, and therefore reject requests with
78 <code>PATH_INFO</code>. You can use the <directive
79 module="core">AcceptPathInfo</directive> directive to
80 force the core handler to accept requests with <code>PATH_INFO</code>
81 and thereby restore the ability to use <code>PATH_INFO</code> in
82 server-side includes.</li>
85 module="mod_negotiation">CacheNegotiatedDocs</directive>
86 directive now takes the argument <code>on</code> or
87 <code>off</code>. Existing instances of <directive
88 >CacheNegotiatedDocs</directive> should be
89 replaced with <code>CacheNegotiatedDocs on</code>.</li>
92 The <directive module="core">ErrorDocument</directive>
93 directive no longer uses a quote at the beginning of the
94 argument to indicate a text message. Instead, you should
95 enclose the message in double quotes. For example, existing
99 ErrorDocument 403 "Some Message
101 should be replaced with
104 ErrorDocument 403 "Some Message"
107 As long as the second argument is not a valid URL or
108 pathname, it will be treated as a text message.
111 <li>The <code>AccessConfig</code> and
112 <code>ResourceConfig</code> directives no longer exist.
113 Existing instances of these directives can be replaced with
114 the <directive module="core">Include</directive>
115 directive which has equivalent functionality. If you were
116 making use of the default values of these directives without
117 including them in the configuration files, you may need to
118 add <code>Include conf/access.conf</code> and <code>Include
119 conf/srm.conf</code> to your <code>httpd.conf</code>. In order to
120 assure that Apache reads the configuration files in the same order
121 as was implied by the older directives, the <directive
122 module="core">Include</directive> directives should be placed at the end
123 of <code>httpd.conf</code>, with the one for <code>srm.conf</code>
124 preceding the one for <code>access.conf</code>.</li>
126 <li>The <code>BindAddress</code> and <code>Port</code>
127 directives no longer exist. Equivalent functionality is
128 provided with the more flexible
129 <directive module="mpm_common">Listen</directive>
132 <li>Another use of the <code>Port</code>
133 directive in Apache-1.3 was setting the port number to be used
134 in self-referential URL's. The Apache-2.0 equivalent is
135 the new <directive module="core">ServerName</directive>
136 syntax: it has been changed to allow specifying both the
137 hostname <em>and</em> the port number for self-referential URL's
138 in one directive.</li>
140 <li>The <code>ServerType</code> directive no longer exists.
141 The method used to serve requests is now determined by the
142 selection of MPM. There is currently no MPM designed to be
143 launched by inetd.</li>
145 <li>The <code>mod_log_agent</code> and <code>mod_log_referer</code>
146 modules which provided the <code>AgentLog</code>,
147 <code>RefererLog</code> and <code>RefererIgnore</code> directives have
148 been removed. Agent and referer logs are still available using the
149 <directive module="mod_log_config">CustomLog</directive>
150 directive of <module>mod_log_config</module>.</li>
152 <li>The <code>AddModule</code> and
153 <code>ClearModuleList</code> directives no longer exist.
154 These directives were used to ensure that modules could be
155 enabled in the correct order. The new Apache 2.0 API allows
156 modules to explicitly specify their ordering, eliminating the
157 need for these directives.</li>
159 <li>The <code>FancyIndexing</code> directive has been removed.
160 The same functionality is available through the
161 <code>FancyIndexing</code> option to the <directive
162 module="mod_autoindex">IndexOptions</directive>
165 <li>The MultiViews content-negotiation technique provided by
166 <module>mod_negotiation</module> has become more strict in its
167 default file matching. It will select only from <em>negotiable</em>
168 files. The old behavior can be restored using the <directive
169 module="mod_mime">MultiviewsMatch</directive> directive.</li>
175 <title>Misc Changes</title>
178 <li>The module <module>mod_auth_digest</module>, which was
179 experimental in Apache 1.3, is now a standard module.</li>
181 <li>The <code>mod_mmap_static</code> module, which was experimental in
182 Apache 1.3, has been replaced with <module>mod_file_cache</module>.</li>
184 <li>The distribution has been completely reorganized so that
185 it no longer contains an independent <code>src</code>
186 directory. Instead, the sources are logically organized under
187 the main distribution directory, and installations of the
188 compiled server should be directed to a separate
193 <section id="third-party">
194 <title>Third Party Modules</title>
196 <p>Extensive changes were made to the server API in Apache 2.0.
197 Existing modules designed for the Apache 1.3 API will
198 <strong>not</strong> work in Apache 2.0 without modification.
199 Details are provided in the <a href="developer/">developer
200 documentation</a>.</p>