アップグレードを行う人のための、以前からの Apache ユーザにとって重要な情報を記述しているドキュメントです。最近の主要なリリースの違いをリストしているだけであることに注意してください。例えば、Apache 1.1 かそれ以前のものを使っている人は、このドキュメントが的を得ていると判断する前に、Apache 1.2 にアップグレードしていることがわかるでしょう。古いユーザはコードチェンジを追跡するsrc/CHANGESファイルを見ることができます。
これらは簡潔な説明なので、詳しくはApache 1.3 の新機能ドキュメントかsrc/CHANGESファイルで多くの情報を捜すと良いでしょう。
Module directive も AddModule directive に変更されています。
Configuration 変数である EXTRA_LFLAGS は EXTRA_LDFLAGS という名前になっています。
-DMAXIMUM_DNS 定義は、必要な時に二重の DNS 逆引きルックアップを実行する mod_access の変更により、廃れています。
-DSERVER_SUBVERSION=\"string\" のコンパイル時のオプションは、ランタイム時に API がap_add_version_component()を呼び出すことにより、置き換えられています。設定の記述によるサーバ定義のコンパイル時の修正は、現在サポートされていません
mod_dir は mod_autoindex と mod_dir に分割されています。
mod_browser は mod_setenvif によって置き換えられています。
suexec を使うか、EXTRA_CFLAGS に -DUSE_FCNTL_SERIALIZED_ACCEPT を追加することを考えるべきです。これは遅いので、詳しい情報については パフォーマンスの改善 が役に立ちます。デフォルトの設定ではサービスアタックの可能性がある軽い拒絶がありますが、デフォルト設定は非常に速くなります。
mod_auth_msqlは配布から外されています。
mod_expires はディスクのファイルにはないコンテンツに Expire ヘッダを付加します。以前はコンテンツがディスクのファイルにない場合、 Expire ヘッダを付加しませんでした。これは、それらが以前には付加されなかった所で Expire ヘッダが付加されるということです。
AuthName This and That
このように変更する必要があります
AuthName "This and That"
この変更は設定の記述に一貫性を持たせています。
サーバ設定ファイルで認識されない記述は、サーバがログするエラーメッセージになって、起動に失敗します。.htaccess ファイルで、知られていない記述はサーバにそのエラーログに対するエラーをログさせて、クライアントに 'Internal Server Error' ページを返します。
NameVirtualHost directive (ip:port のペア毎に一つの directive)で HTTP/1.1 スタイルのバーチャルホストをすることになっている ip:port のペアを必要とします。以前、これは"main server address"で暗黙アドレス指定されていました。現在では多くの問題を避けるためには、はっきりと記述されなければなりません。設定について詳しくはApache Virtual Host documentationを見てください。
HostnameLookupsのデフォルトは Off です。
mod_access 構文 "allow user-agents" は外されています。"allow from env" に置き換えられています。
<Directory> directive に影響を与えます。
TransferLog directive が与えられていないと、まったくログが行われません。
(以前は logs/access_log に対するデフォルトでした)
ServerType inetd は不評です。まだ存続していますが、バグがほとんど修正されていません。
httpd_monitorは不評です。代わりにmod_statusを使って、http://myhost/server-status?refresh=10 のような URL に対するリクエストを作ります。
以前はサーバのポストプロセスなしでクライアントに直接ソケットを提供していた "nph-" CGI は、HTTP/1.1 や SSL とは完全には互換していません。そういうものとして、ある状況下で適切に動作させる目的で、暗号化やチャンキングのような転送を実装しています。現在、nph と non-nph のスクリプトの違いは"non-parsed headers"だけです。
dbmmanage は徹底的にオーバーホールされています。
以下の 1.2 と 1.3 の API の違いは、Apache に実装されていないサードパーティのモジュールに僅かな変更を必要とすることです。
ap_'は、以下のシンボルクラスの全てに割り当てられます: Apache の一般的な機能(例、ap_cpystrn)、公開されている API 機能(例、palloc、bgets)、スタティックではないが(cross-object の使用のせいで)、スタティックでなければならないプライベートな機能(例、new_connection)。compat.h と名付けられたの新しいヘッダファイルは Apache 1.2 のソースと互換性があり、古いシンボル名のための定義があります。#include compat.h するか、使っている API シンボルを最新にすると良いでしょう。
const char *ap_get_server_version() を呼ぶことによってそれを得るために訂正されなければなりません。
ap_construct_url のプロトタイプは変更しています。二番目のパラメータは server_rec より先になり、request_rec に変更されています。
table のデータタイプはあいまいなタイプです。table を想定しているコードは array_header がコンパイルしていないのと同じです。これは実際、API を実行する方法を変更していて、Apache の全てのバージョンは、テーブルのエレメントにアクセスする必要があるコードになっている table_elts() 機能を持っています。このために行われた変更は非常に簡単なもので、Apache の全てのバージョンで動きます。
t はテーブルであるとします。コードが t->elts をリフェレンスすると、このようにそれをなにかで置き換えます:
array_header *arr = table_elts(t);
table_entry *elts = (table_entry *)arr->elts;
コードは t->nelts をリフェレンスする時は arr->nelts を使います。
table_elts を捜すと、標準のモジュールに多くの例があります。