XAMPPにエラー Apacheが起動しない・スタートできない原因と対処法

XAMPPエラー Apacheがスタートない原因と対処法

XAMPPのApacheが起動しない場合に考えられる原因には「ポート番号の競合」と「Internet Information Servicesの有効化」が考えられます。

ここでは、これらの対処法についてWindows、macそれぞれに分けて説明します。

Apacheが起動しない原因

原因その①:ポート番号の競合

Apacheが起動しない原因で最も多いのは、ポート番号の競合です。

ポート番号とは、インターネット通信を行なう時に「指定されたIPアドレスのサーバーの、どのソフトウェアと通信するか」を決めるためのものです。

指定するポート番号は、代表的なものについてはあらかじめ決められています。

例えば、Webサイトを閲覧する場合は80番、メールの送信には25番…といった具合です。

なお、特定のソフトウェアが、あるポートを使用している場合、他のソフトウェアが同じポートを使用することはできません。

Apacheは、Webサーバーの標準的なポートである80番を使用します。

ところが、既に他のソフトウェアが80番を使用している状態でApacheを起動しようとすると、ポート番号の競合でエラーとなり、起動することができなくなります。

ポート番号の競合が発生した場合、主に次の2つの対処方法があります。

①ポートが競合しているソフトウェアを終了させる
②使用するポート番号を変更する

はじめに、Apacheとポートが競合しているソフトウェアが起動していないかどうか確認し、そのソフトウェアを終了させて問題ない場合は①、どちらのソフトウェアも起動が必要な場合は②の対処方法を取ってください。

①ポートが競合しているソフトウェアを終了させる

Windowsの場合
WindowsはSkypeとよく競合するようですが、実際にどのソフトウェアと競合しているのかは確認してみないと分かりません。

そこで、はじめにポート番号の利用状況を調べます。

コマンドプロンプトを開き、以下のコマンドを実行します。

コマンドプロンプトは、パソコン画面左下にある検索窓に「コマンドプロンプト」と入力するとアプリが表示されますので、ダブルクリックすると開きます。

(コマンドを入力+Enter)
netstat -ano | find “80

既に80番が使用されている場合は、下記のような表示がされるかと思います。
プロトコル ローカルアドレス 外部アドレス   状態     PID
TCP      0.0.0.0:80    0.0.0.0:0  LISTENING XXX(任意の数値)

右端に表示されているPID(プロセスID)が、ソフトウェアを特定するために必要な情報となります。

PIDの列が表示されていない場合は、左上の「名前」の箇所で右クリックし、表示選択画面のPIDの箇所にチェックを入れてください。PIDの列が表示されます。

次にタスクマネージャーを起動して、[プロセス]タブから、先ほど確認したPIDがある行を探します。
特定したPIDの行を選択した状態で、タスクマネージャー右下の「タスクの終了」をクリックすると、80番ポートを使用していたソフトウェアが終了します。

macOSの場合
macOSのXAMPPは、macOSのXAMPPは、ローカルPC上に直接ソフトウェアをインストールするのではなく、仮想的に立ち上げたLinuxマシンのなかに必要なソフトウェアをインストールしたり、XAMPPを実行したりするようになっていますので仮想環境で動作するため、基本的にApache側のポート番号の競合は起こりにくくなっています。

ただし、ローカルPC側でポート番号の競合が発生するケースが稀にありますので、その場合の対処方法について説明します。

macOSでXAMPPのApacheを使用する場合、標準では、ローカルPCの8080番ポートから仮想環境の80番ポートへとアクセスします。

使用するポート番号は、XAMPPのコントロールパネルの[Network]タブから設定します。

下記画面の[Enable]ボタンをクリックすると、設定が有効になります。

ローカルPC側で8080番ポートを使用しているソフトウェアがある場合、[Enable]ボタンのクリック時に以下のエラーメッセージが表示され、設定を有効にすることができません。

どのソフトウェアが8080番ポートを使用しているか確認するために、ターミナルを開き、以下のコマンドを実行します。
lsof -i:8080

例として、以下のように表示されます。

この場合はPythonが8080番ポートを使用しているということが分かります。

Windowsの場合と同じように、PID(左から2つ目の項目)の値を控えておいてください。

8080番ポートを使用しているソフトウェアを終了して問題ない場合、ターミナルから以下のコマンドを実行します。
kill -9 XXX(PID)

※-9は強制的に終了させるコマンドのため、ソフトウェアの停止方法が分からない場合のみ使用するようにしてください。

②使用するポート番号を変更する

Windowsの場合
こちらはApacheの設定を変更することになるため、やや上級者向けとなります。

ローカルPCの「[XAMPPのインストール先フォルダ]\apache\conf」フォルダにある「httpd.conf」というファイルを2箇所編集します。
※[XAMPPのインストール先フォルダ]はCドライブ直下にある場合が多いです。

Windowsのメモ帳を起動してから、ファイル > 開く >「httpd.conf」ファイルを選択し、ファイルを開いてください。もしくは「httpd.conf」ファイルをメモ帳にドラッグアンドドロップすると開きます。

「httpd.conf」ファイルをはじめとするApacheの設定ファイルは、ディレクティブという設定項目の組み合わせで構成されており、多くは『項目名 設定値』の形式で記述します。

※参考:Apache ディレクティブ一覧

修正の1箇所目はServerNameディレクティブです。ServerNameディレクティブは、Apacheが自分自身を示す時のホスト名・ポート番号を設定します。
※ディレクティブとは、Apacheの設定ファイルの設定の単位(まとまり)を指します。

初期状態では以下のようになっています。
ServerName localhost:80

「ServerName localhost:80」の場所は、メモ帳の「編集」タブから「検索」を選択し「検索」窓を開くか、キーボードの「Ctrl」と「F」を押して「検索」窓を開き、「検索する文字列(N)に「ServerName localhost:80」を入力し、「次を検索」ボタンを押してください。

下記のように青の背景色で「ServerName localhost:80」の場所が表示されます。

青枠で示した部分を以下のように変更します。
ServerName localhost:81

※行の先頭に「#」が付いている場合は、設定がコメントアウト(無効化)されています。編集する際に「#」も削除するようにしてください。
図のように「ServerName localhost:80」の前に「#」1行ズレて「#」がない場合は、80を81に変更するだけで大丈夫です。

修正の2箇所目はListenディレクティブです。Listenディレクティブは、Apacheがリクエストを待ち受ける時のポート番号を設定します。

初期状態では以下のようになっています。
Listen 80

こちらを以下のように変更します。
Listen 81

設定を変更したら、Apacheを再起動して以下のURLにアクセスし、Apacheのダッシュボード画面が表示されればOKです。
http://localhost:81/

macOSの場合
Apacheに接続する際、ローカルPCが使用するポート番号を変更します。

XAMPPのコントロールパネルを起動し、[Network]タブを開きます。
初期状態では以下のようになっています。

1行目を選択した状態で[Edit]ボタンをクリックすると、こちらのウィンドウが開きます。

ローカルPCの8080番ポートから、XAMPPの仮想環境の80番ポートに接続する設定になっています。

ローカルPCで使用するポート番号を変更する場合は、LocalPort欄を8080から任意の値に変更します(今回は8081番ポートに変更します。)。

これで次回からは、以下のURLでApacheに接続ができるようになります。
http://localhost:8081/

原因その②:IISを無効化する(Windows7以降)

IISとはInternet Information Servicesの略称で、Windowsが標準で備えているWebサーバーです。

Webサーバーという事で、Apacheと同じように標準で80番ポートを使用します。

Windows7・8においては、初期状態では無効化されている機能ですが、Windows10では有効になっているケースがあるため、以下の手順でIISを無効化します。

コントロールパネルを開き、
「プログラム」>「Windowsの機能の有効化または無効化」をクリックし、下記の画面を開きます。

「インターネットインフォメーションサービス」の「World Wide Webサービス」にチェックが入っている場合は、チェックを外しOKボタンを押します。

Internet Information Servicesが有効化されていることが原因でApacheがスタートしない場合は、これで起動するようになります。