MAMP エラー Apache が起動しない

MAMP を起動しても Apache が起動せず、Start Servers をクリックすると「Apache couldn't be started. Please check your MAMP installation and configuration.」というエラーが表示されてしまう現象についての覚書です。

結果的には MAMP を再インストールしました。

関連ページ:MAMP をアップデート(新しいバージョンを再インストール)

作成日:2020年月日

エラーの調査

今まで問題なく使えていた MAMP が突然使えなくなりました。MAMP のバージョンは 5.4 です。

MAMP を起動してパスワードを入力すると、今までは自動的に Apache が起動していたのですが突然 Apache が起動しなくなりました。MySQL は起動しています。

Start Servers をクリックすると「Apache couldn't be started. Please check your MAMP installation and configuration.」というエラーが表示されます。

エラーメッセージは「Apache を開始できませんでした。 MAMP のインストールと構成を確認してください。」という大雑把なメッセージなので色々と確認してみましたが、結果としては原因は不明(特定できず)です。以下が概要です。

設定の確認

メニューの MAMP → Preferences で確認すると以下の通り。

ポートを「Set MAMP ports do default」とクリックしてデフォルトにしても状況は変わらず起動しないので、「Set Web & MySQL ports to 80 & 3306」をクリックして元に戻す。

PHP のバージョンは 7.3.7

Document Root も問題なさそう。一度異なるフォルダを指定して、元に戻しても状況は変わらず。

MySQL のバージョンは 5.7.26

Apache の設定ファイル(httpd.conf)の確認

Apache の設定ファイル httpd.conf と httpd-vhosts.conf を確認しても問題なさそう。

MAMP
└── conf
    └── apache
        └── httpd.conf

MAMP
└── conf
    └── apache
        └── extra
            └── httpd-vhosts.conf

MAMP の場合は以下のコマンドで設定ファイル(httpd.conf)の文法チェックができます(3,4行目の Warning は httpd-vhosts.conf にデフォルトで記述されているサンプルが残してあるためのもので無視できます)。

sudo /Applications/MAMP/Library/bin/apachectl configtest  return
Password:  # パスワードを入力
Warning: DocumentRoot [/Applications/MAMP/Library/docs/dummy-host.example.com] does not exist
Warning: DocumentRoot [/Applications/MAMP/Library/docs/dummy-host2.example.com] does not exist
Syntax OK  # 文法チェックは問題なし

関連ページ:configtest 文法エラーをチェック

hosts ファイルの確認

hosts ファイルを確認。問題なさそう。

cat /private/etc/hosts   return
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1	localhost
255.255.255.255	broadcasthost
::1             localhost
127.0.0.1	webdesignleaves.localhost

ポートの確認

ブラウザで localhost と 127.0.0.1 へアクセスすると以下のようにアクセスできないので、別の Apache などが起動しているわけではなさそう。

ポート80 が他で使われているかを確認するが、なさそう。

sudo netstat -an |grep *.80   return #何も表示されず
sudo lsof -P -i:80 |grep "LISTEN"    return #何も表示されず

Web サーバーを Nginx に変更

Preferences で Web サーバーを Nginx に変更すると起動する。

apache_error.log の確認

Apache のエラーログ apache_error.log を確認するが、原因不明。

MAMP
└── logs
    └── apache_error.log

あまりこれ以上時間を費やしたくなかったので、原因調査は諦めて MAMP を再インストールしました。

MAMP の再インストール

起動しなくなった MAMP のバージョンは 5.4 で、この時点での MAMP の最新バージョンは 5.6 でした。今回はデータのバックアップをしてから既存の MAMP を完全にアンインストールして最新のバージョンの MAMP を再インストールしました。

再インストールした際に気づいたのですが、最初の方に以下のようなメッセージが表示されます。

大切な情報

このインストーラーは MAMP と MAMP PRO をアプリケーションディレクトリにインストールします。 MAMP フォルダを移動したり、名前を変更したりしないでください。

インストーラーが既存のインストールを検出した場合、/Applications/MAMP/htdocs および /Applications/MAMP/conf/ssl のデータを保持し、既存のデータベースを新しいインストールにコピーし、古いMAMPフォルダーの名前を変更します。

もしかしたら既存の MAMP をアンインストールせずに、最新バージョンの MAMP を上書きインストールすれば簡単だったかもしれません(追記:上書きインストールのほうが簡単でした)。

※MAMP のアップグレードの場合は、MAMP を終了させて新しいバージョンをインストールすれば良いようなので(設定は再度やり直す必要があるようです)、その方法で最初に試してみればよかったと思っています(データも自動的にバックアップされるようですが、別途バックアップは必要)。

MAMP を再インストールする場合、アンインストール(削除)してから再インストールするにしても、上書きインストールするにしても、既存のデータはバックアップする必要があります。

上書きインストールの場合は、htdocs やデータベースなどの既存のデータがコピーされますが、もしもの場合に備えてバックアップは必須です。

[追記] 最新バージョンの MAMP で上書きインストール

アンインストール(削除)せずに、最新バージョンの MAMP をインストールすれば、既存の htdocs とデータベースが新しい MAMP にコピーされるので簡単です。

但し、既存の htdocs とデータベースは新しい MAMP に移動されるので、インストールする前に MAMP フォルダを丸ごとコピーしてバックアップしておくのが安全です。

関連ページ:MAMP をアップデート(新しいバージョンを再インストール)

結論として、既存の MAMP はアンインストール(削除)せずに、上書きインストールするほうが簡単でした。そのため、以降の情報はあまり意味がありません。

データのバックアップ

ディスクに余裕があれば、MAMP フォルダを丸ごと別名でコピー(保存)して、データベースを使っている場合はデータベースを個々にエクスポートしておくのが確実だと思います。以下は最低でもバックアップしておいたほうが良いと思われるフォルダやファイルです。

使用している環境に依存するので、これで大丈夫だという保証はありません(必要に応じてこの他に個々のデータベースのエクスポートなど)。

  • htdocs フォルダ: Web ファイルが入っているフォルダ
  • apache フォルダ: httpd.conf や httpd-vhosts.conf などの設定ファイルが入っているフォルダ
  • db フォルダ:データベース関連のフォルダ
  • php フォルダ: 各バージョンの PHP のプログラムや設定(php.ini など)が入っているフォルダ

関連項目:設定ファイルの場所

データベースのバックアップ

確実なのは個々のデータベースを phpMyAdmin などでエクスポートしてバックアップしておくことだと思います。(関連項目:サーバーのデータベースをエクスポート

データベース全体をまとめてエクスポートするとインポートの際にサイズの制限などで面倒なことになる可能性があります。

今回の場合、MAMP の 5.4 から 5.6 への移行になったのですが、MAMP を一度完全に削除してから再インストールしたためか、db フォルダを戻しても作動しませんでした。このためエクスポートしておいたデータベースをインポートする必要がありました。

もしかしたら、MAMP を削除せずに上書きインストールしていれば既存のデータベースが新しいインストールにコピーされてうまく行ったかも知れません。

WordPress の場合は、All-in-One WP Migration などのプラグインを使った方が簡単だと思います(但し、マルチサイトの場合は有料版が必要です)。

[追記] MAMP を削除せずに上書きインストールすれば、既存のデータベースが新しいインストールにコピーされるので、そのほうが簡単です。

MAMP のアンインストール

データのバックアップを取ってからアンインストールを実行します。

MAMP をアンインストールするには、MAMP ディレクトリを削除するだけで良いようです(MAMP macOS Documentation の Uninstall)。

今回は MAMP をアンインストールしてから再インストールしましたが、データをバックアップ後に上書きインストールする方法もあるかと思います。それでも問題がある場合はアンインストールして再インストールでも良かったのではと思っています。

アンインストールが完了したら MAMP を再インストールし、バックアップしたデータを戻します。