Xamppでポート競合を防ぐ方法

Xamppでポート競合を防ぐ方法をご紹介します。

##作業環境
OS：Windows 10
エディション：HOME
バージョン：2004
Xampp：バージョン7.4.6

※Xamppのインストール方法はこちらで解説しています。
[【環境構築】Windows10にXAMMPをインストールする方法](https://qiita.com/neneta0921/items/46b2b974ecc6075acb3c)


##ポートとは
>ポートはよく「扉（ドア）」に例えられるます。
IPアドレスが住所「家」であれば、ポートは外に出る・外から入る「扉（ドア）」に該当します。

>多くのホームページでインターネットはIPアドレスで通信を行っていると記載されていますが、実際には「IPアドレス＋ポート番号」で通信を行っています。

引用元：[用語集　「ポート(PORT)とは？」](https://www.cman.jp/network/term/port/)
##Xamppでポート競合が起こる原因
1つのプログラムにつきポートは1個しか利用できない仕組みとなっているので、Xamppが他のプログラムと同じポートを使っていると競合が起きて、Xamppが利用できなくなります。

そこでXamppで利用するポートを変更することで、競合を防ぎます。

##Xamppで利用するポートを変更する
![202005262238.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/7e8591b7-9900-ad11-279d-f7cd58cc3313.png)
Xamppのデフォルトでは、Apacheは80番と443番、MySQLは3306番のポートをそれぞれ利用しています。80番はHTTPプロトコル、つまりホームページを閲覧するときに使われるものなので、様々なソフトで利用されていて競合の原因になります。このポート番号を変更します。
###①Apacheのポート番号を変更する
![202005262254.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/bf15fa54-da2c-c41e-a5a3-bc3fad441bae.png)
ApacheやMySQLなどを起動している場合は全部停止して、「Config」を押します。
![202005271509.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/609539c3-83ca-5ab8-452d-e8c17b35abaa.png)
「Service and Port Settings」を押します。
![202005271514.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/304a91c3-94c3-c18e-ec33-80a821db6ffc.png)
この画面が起動するので、「Main Port」の番号を任意の数字に変更します。ここでは「8888」と設定しました。変更したら「Save」のボタンを押して画面を閉じます。
###※エラーが起きた場合
私の環境下では、以下のエラーが出てきました。
![202005271517.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/89a3b776-8661-b893-0036-abee1e451750.png)

```
Error:Cannot create file "C:\xampp\xampp-control.ini"
アクセスが拒否されました。
```

書き込み権限がないようなので、管理者権限で実行してみます。
![202005271536.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/95d8a31e-1b16-2f17-9155-a2885bf24d70.png)
「XAMPP Control Panel」で右クリックをして「その他」→「管理者として実行」を押して、管理者権限で実行するとエラーが解消しました。

###②Apache(httpd.conf)を変更する
![202005271543.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/c9af1c4e-8ebe-2ad1-a979-a53e3b1dc47f.png)
Apacheの右の「Config」→「Apache(httpd.conf)」を選びます。
![202005271548.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/8d1835e1-70c8-879b-08ea-40450781b446.png)
「httpd.conf」がメモ帳で開くので、「編集」→「検索」を選びます。
![202005271553.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/85df92aa-2146-26d5-3edd-d3bdd62b10c9.png)
「Listen」と検索をし、「Listen 80」とポート番号が書いてあるので、ここも先程と同じ番号に変更をします。ここでは「Listen 8888」としました。変更が終わったら、保存してメモ帳を閉じます。
※管理者権限で実行している場合は、ここまでできたら一度Xamppを終了して、再度、通常通りに起動してください。
###③動作確認
![202005271602.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/8366e5dc-d3c5-3721-0bef-7a2f83f9ecc9.png)
「Apache」と「MySQL」をそれぞれ「Start」ボタンを押して起動すると、ポート番号の表示が変わっています。
![202005271604.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/852ee07b-45b5-200c-cb8e-468b5891e11d.png)
「Apache」の右の「admin」のボタンを押します。
![202005271605.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643170/98d44ce4-80c2-17bf-e018-1965bf34e8ca.png)
上のような画面が開いたら、ポート番号の変更は完了です。
##参考サイト
[用語集　「ポート(PORT)とは？」](https://www.cman.jp/network/term/port/)

[XAMPPでインストールしたApacheが起動しないとき](https://php1st.com/946)

[php.iniファイルの確認と修正](https://www.adminweb.jp/xampp/php/index2.html)