今回、PHPの開発環境を構築するためにMAMPを導入しました。
MAMPは、Mac上でApache、MySQL、PHPを手軽にセットアップできるアプリケーションです。
MAMPは無料版と有料版のMAMP PROがあり、間違えてPRO版を起動しないよう注意が必要です。
まず、以下のリンクからMAMPをダウンロードし、インストールします。
https://www.mamp.info/en/mac/
インストール後、MAMPのアプリケーションを起動し、"Start"ボタンをクリック。しかし、以下のエラーメッセージが表示されました。
「Apache couldn't be started. Please check your MAMP installation and configuration.」
PHPとMySQLは正常に動作しているものの、Apacheが起動しない状態です。
エラー原因の特定
Apacheが起動しない原因を探るため、エラーログを確認しました。
エラーログは以下のパスに出力されます。
Applications/MAMP/logs/apache_error.log
ログには以下のエラーが記録されていました。
/Applications/MAMP/fcgi-bin/php.fcgi: line 4: /Applications/MAMP/bin/php/php8.3.1/bin/php-cgi: No such file or directory
このエラーは、MAMPが指定している/Applications/MAMP/bin/php/php8.3.1/bin/php-cgiが存在しないことを示しています。
実際に/Applications/MAMP/fcgi-bin/の中身を確認すると、存在しているPHPバージョンは以下の通りでした。
doianna@doiannanoMacBook-Air ~ % cat /Applications/MAMP/bin/php/
browscap.ini* php7.1.33/ php7.4.33/ php8.3.9/
composer* php7.2.34/ php8.1.29/
php@ php7.3.33/ php8.2.20
この結果から、MAMPが指定しているphp8.3.1はインストールされておらず、最新のphp8.3.9を使用する必要があることがわかりました。
設定ファイルの修正
次に、MAMPが参照する設定ファイルを修正します。まず、以下のファイルを編集します。
/Applications/MAMP/fcgi-bin/php.fcgi
内容は以下のようになっています。
exec /Applications/MAMP/bin/php/php8.3.1/bin/php-cgi -c "/Applications/MAMP/bin/php/php8.3.1/conf/php.ini"
この行を、存在するphp8.3.9に変更します。
exec /Applications/MAMP/bin/php/php8.3.9/bin/php-cgi -c "/Applications/MAMP/bin/php/php8.3.9/conf/php.ini"
さらに、/Applications/MAMP/fcgi-bin/php8.3.1.fcgi
というファイルも存在していたため、これもphp8.3.9.fcgi
にリネームし、内容も同様に修正します。
exec /Applications/MAMP/bin/php/php8.3.9/bin/php-cgi -c "/Library/Application Support/appsolute/MAMP PRO/conf/php8.3.9.ini"
これで設定は完了です。
MAMPの再起動
設定を修正した後、MAMPを再起動し、再度"Start"ボタンを押すと、無事にApacheが起動しました!
その他試したけど効果がなかったこと
- MAMPの再インストール
- 下記を参考にMac標準のApacheが起動していないか確認
- MAMPのApacheが正しくインストールされているか確認
正常に動作していました。
doianna@doiannanoMacBook-Air ~ % /Applications/MAMP/Library/bin/httpd -v Server version: Apache/2.4.58 (Unix) Server built: Dec 29 2023 10:08:39`
- アプリケーションを介さずにApacheを手動で起動
doianna@doiannanoMacBook-Air ~ % sudo /Applications/MAMP/Library/bin/apachectl start
- 手動ではApacheが起動しました
これらの試行錯誤の結果、最終的にエラーログを確認し、原因を特定することで解決に至りました。