ポート番号が他のアプリケーションで使用されていないか確認する

XAMPP を使ってインストールしたアプリケーションを起動する前にアプリケーションが使用するポート番号が既に使われていないかどうかを確認します。例えば Apache ではデフォルトで使用するポート場号は 80 番ですが既に他のアプリケーションが使っていないか確認することができます。ここではアプリケーションで使用するポート番号が使用されていないかどうか確認する方法について解説します。

※ ポート番号とは Apache などサーバ型のアプリケーションがクライアントとの通信のやり取りを行う上で使用する通信路の番号です。アプリケーション毎に使用するポート番号が設定されていますが、他のアプリケーションが既に同じポート番号を使っていると通信が行えません。

(Last modified: )

ポート番号が使用されていないか確認する

XAMPP でインストールされたアプリケーションがデフォルトで使用するポート番号は次の通りです。

Service       ポート番号
-----------------------
Apache        80, 443
MariaDB       3306
FileZilla     21, 14147
Tomacat       8080

これらのポート番号が既に使用されているかどうか確認するためのツールが XAMPP では用意されています。 XAMPP をインストールしてディレクトリの中の install ディレクトリを見てください。 portcheck.bat という名前のバッチファイルが入っています。

ポート番号が使用されていないか確認する(1)

コマンドプロンプトを起動し、先ほどのディレクトリに移動してから portcheck.bat を実行して下さい。すると「Fatal error: Uncaught Error: Call to undefined function ereg_replace()」というエラーが表示されました。

ポート番号が使用されていないか確認する(2)

portcheck.bat では同じディレクトリの中にある portcheck.php を使用してポートのチェックを行いますが、 portcheck.php ファイルの中で現在使用できない ereg_replace 関数を使用しているためエラーが発生します。

ereg_replace 関数の代わりに preg_replace 関数を使うように書き換えます。 portcheck.php ファイルをテキストエディタで開いてください。

ポート番号が使用されていないか確認する(3)

13 行目に次のように記述されています。

$port = ereg_replace('-', '', $argv[1]);

この行を次のように変更してください。

$port = preg_replace('/-/', '', $argv[1]);

修正後 portcheck.php ファイルを保存してください。そのあとで改めて portcheck.bat を実行して下さい。すると今度は「Fatal error: Uncaught TypeError: fclose(): Argument #1 ($stream) must be of type resource」というエラーが表示されました。

ポート番号が使用されていないか確認する(4)

再度 portcheck.php ファイルをテキストエディタで開いてください。 29 行目に次のように記述されています。

@fclose($handle);

この行を次のように変更してください。

if ($handle){
    @fclose($handle);
}

修正後 portcheck.php ファイルを保存してください。そのあとで改めて portcheck.bat を実行して下さい。今度はエラーが発生せずに無事に実行できました。

ポート番号が使用されていないか確認する(5)

チェックが終わると先ほどのディレクトリ内に portcheck.ini というファイルが作成されます。

ポート番号が使用されていないか確認する(6)

portcheck.ini ファイルはテキストファイルですのでテキストエディタなどで開いてみて下さい。次のように各ポート番号の値が全て FREE になっていればアプリケーションが使用するポート番号が現在使われておらず問題が無いことを表しています。

[Ports]
Port80=FREE
Port443=FREE
Port3306=FREE
Port21=FREE
Port14147=FREE
Port8080=FREE

例えば 80 番ポートをすでに他のアプリケーションが使用している場合は、 FREE ではなく BLOCKED と表示されます。

[Ports]
Port80=BLOCKED
Port443=FREE
Port3306=FREE
Port21=FREE
Port14147=FREE
Port8080=FREE

BLOCKED と表示されたポート番号があった場合は、現在そのポート番号を使用しているアプリケーションを終了するか、または XAMPP 経由で起動するアプリケーションが使用するポート番号を変更してください。

-- --

アプリケーションで使用するポート番号が使用されていないかどうか確認する方法について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。