MAMPを起動した時のエラーの対処(port 8888 is in use by some other software)
はじめに
MAMPを起動する際、
Apache couldn't be started because port 8888 is in use by some other software.
と表示され起動できなくなってしまったので、その対処法をメモとして残します。
条件
PHP version: 7.4.12
macOS Big Sur version: 11.2.3
もくじ
- エラー内容
- 対処 ~ 解決
- それぞれのコマンドについて
- おわり
1. エラー内容
冒頭でも記述しましたが、エラー内容は以下の文となります。
Apache couldn't be started because port 8888 is in use by some other software.
日本語にすると、
"ポート8888が他のソフトウェアで使用されているため、Apacheを起動できませんでした。"
...ということです。
ポート8888を他のソフトウェアが使ってるみたいです。
2. 対処
誰がポート8888を使っているのかを確認するために、ターミナルで以下のコマンドを打ち、確認します。
% sudo lsof -i -P | grep "LISTEN"
このコマンドを実行した後、パスワードの入力を求められるのでPCを開いた時に入力するパスワード
を入力します(入力内容は見えませんが、ちゃんと入力されています)。
Password:
パスワードが通ると、現在実行されているポートの状態が一覧で出力されます。
その中で、8888番を探す!
httpd 76916 username 4u IPv6 0xc477c18c7b61912d 0t0 TCP *:8888 (LISTEN)
httpd 76917 username 4u IPv6 0xc477c18c7b61912d 0t0 TCP *:8888 (LISTEN)
httpd 76918 username 4u IPv6 0xc477c18c7b61912d 0t0 TCP *:8888 (LISTEN)
httpd 76920 username 4u IPv6 0xc477c18c7b61912d 0t0 TCP *:8888 (LISTEN)
httpd 76922 username 4u IPv6 0xc477c18c7b61912d 0t0 TCP *:8888 (LISTEN)
ありました。
今回では、この5つの実行中のプロセスを停止していきます。
プロセスの停止には、以下のコマンドを打ちます。
% kill -9 *****
*****には左から2番目の番号(プロセスID)を入力します。
% kill -9 76916
これを実行すると、入力した番号のプロセスが終了します。
この調子で他のプロセスIDもkillを実行していく。
最後にもう一度手順①
のコマンドを実行してちゃんと8888のプロセスが終了しているか確認する。
MAMPが起動できたらOK!
3. コマンドとそれぞれのオプションについて
今回のエラーは上で記述した手順で解決したのですが、ターミナルで入力したコマンドのそれぞれの意味が理解しきれていなので、ここからはそのまとめについて記述します。
% sudo lsof -i -P | grep "LISTEN"
コマンド | 意味 |
---|---|
sudo | 他のユーザーの権限で操作が可能 |
lsof | 「List Open Files」 = プロセスが開いているファイルを表示する |
grep | ファイル中の文字列に対して正規表現を使って検索し表示する |
以下は、lsofコマンドのオプションとなります。
(他にも複数ありますが、今回は使用したオプションのみ記述しています)
オプション | 意味 |
---|---|
-i | ローカルホストの待機ポートとプロセスを一覧表示 |
-P | ポート番号(今回では8888)をサービス名に変換しない※1 |
| : "かつ"という意味
LISTEN : 現在使用されているIPアドレス・ポート
つまり、このコードは
「現在使用されている(LISTEN状態)のポートを表示してください」
という意味になります。
※1
-Pオプションをつけなければ、以下のようにポート番号8888がサービス名となりどれが何なのかが分かりにくくなります。
以下は、-Pオプションを記述しなかった場合の出力結果です。
httpd 76916 username 4u IPv6 0xc477c18c7b61912d 0t0 TCP *:ddi-tcp-1 (LISTEN)
httpd 76917 username 4u IPv6 0xc477c18c7b61912d 0t0 TCP *:ddi-tcp-1 (LISTEN)
httpd 76918 username 4u IPv6 0xc477c18c7b61912d 0t0 TCP *:ddi-tcp-1 (LISTEN)
httpd 76920 username 4u IPv6 0xc477c18c7b61912d 0t0 TCP *:ddi-tcp-1 (LISTEN)
httpd 76922 username 4u IPv6 0xc477c18c7b61912d 0t0 TCP *:ddi-tcp-1 (LISTEN)
上記の出力結果で赤枠の部分がサービス名となります。
これがポート番号8888のサービス名なのですが、パッと見全然分かりません。
次は-Pオプションありで出力してみます。
上記の出力結果と違い、サービス名が"8888"に変わっていることがわかります。
httpd 76916 username 4u IPv6 0xc477c18c7b61912d 0t0 TCP *:8888 (LISTEN)
httpd 76917 username 4u IPv6 0xc477c18c7b61912d 0t0 TCP *:8888 (LISTEN)
httpd 76918 username 4u IPv6 0xc477c18c7b61912d 0t0 TCP *:8888 (LISTEN)
httpd 76920 username 4u IPv6 0xc477c18c7b61912d 0t0 TCP *:8888 (LISTEN)
httpd 76922 username 4u IPv6 0xc477c18c7b61912d 0t0 TCP *:8888 (LISTEN)
最後に、プロセスを終了するときに使用したコマンドについて。
% kill -9
コマンド | 意味 |
---|---|
kill | 実行しているプロセスの終了 |
killに続く -9 というのは、シグナルIDと言いkillコマンドのオプションとして併用して記述されることもある。
% kill -[シグナル名またはシグナルID] プロセスID
ちなみに、9は以下のような意味になる。
シグナル名 | シグナルID | 動作 |
---|---|---|
kill | 9 | 強制終了 |
4. おわり
今までLinuxコマンドについて理解が曖昧であったため、今回は良い経験となりました。
コマンドやオプションを駆使して、素早くエラーに対応できるようになります。
【参考にさせて頂いたサイト】
・grepコマンドの詳細
・lsofコマンドについて
・killコマンドについて
Author And Source
この問題について(MAMPを起動した時のエラーの対処(port 8888 is in use by some other software)), 我々は、より多くの情報をここで見つけました https://qiita.com/greencha/items/1b36ed5ae5cda1aa7ca5著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .