MAMP アップデート:MAMP 6 から 7 へ移行時の注意点と設定変更
MAMP 7 では内部構成が変わり、Apache での PHP 実行方法や .htaccess の挙動に影響が出ます。
従来通りの環境を維持するには、php_value や SetEnv、.html ファイルでの PHP 実行方法などを調整する必要があります。
以下では、MAMP の基本的なアップデート手順と、MAMP 6 から 7 への移行時にあるトラブルとその解決策をまとめています。
作成日:2025年09月11日
関連ページ:mkcert を使ってローカル開発環境(MAMP) に SSL を設定
アップデートの基本
以下は MAMP(無料版)のアップデートの概要です。
- 既存の MAMP を削除する必要はありません。
- 新しいバージョンをインストールすると、インストーラーが既存の MAMP を検出し、通常は以下のデータを保持してくれます(新しい MAMP に移動します)。
- /Applications/MAMP/htdocs(プロジェクトファイル)
- 既存の MySQL データベース
- 既存の MAMP フォルダはリネームされて残ります。※ htdocs フォルダと起動ファイル(MAMP.app)は新しい MAMP に移動されます。
但し、完全に保証されるわけではないため、必ず事前にバックアップを取るようにします。
アップデート前に注意すべき点
- データベースのバックアップ
- MySQL のバージョンが変わるとデータ移行で不具合が出ることがあります。
- 念のため mysqldump などを使って全データベースをエクスポートしてくのが安全です。
- 設定ファイルの移行
- 自動で引き継がれないファイルがあります。例えば:
- httpd.conf
- httpd-vhosts.conf
- php.ini
- my.cnf
- カスタマイズしている場合は、新しい MAMP に手動で反映する必要があります。
- 自動で引き継がれないファイルがあります。例えば:
アップデート手順
以下は MAMP(無料版)のアップデート手順です。
MAMP を終了
アップデート前に MAMP を完全に終了しておく必要があります。
Apache や MySQL が稼働中のままアップデートすると、正しく行われない可能性があります(実際には、アラートが出てアップデートできません)。
データベースをバックアップ(推奨)
MAMP のインストーラーは通常、既存のデータベースも新しい環境にコピーしてくれます。
ただし MySQL のバージョンが変わると不具合が起きる可能性があるため、あらかじめ phpMyAdmin や mysqldump を使ってエクスポートしておくと安心です。
また、MAMP フォルダを丸ごとコピーしているので、必要であれば db/mysql ディレクトリからデータを抽出することも可能ですが、この方法は MySQL のバージョン依存があるため、推奨は phpMyAdmin や mysqldump でのバックアップ です。
以下は mysqldump コマンドですべてのデータベースをデスクトップにバックアップする例です。
MAMP 6 では通常、mysqldump は /Applications/MAMP/Library/bin/ にあります。まずターミナルでそのフォルダに移動します。
続いて以下を実行します。
出力先(/Users/xxxx/Desktop/)やファイル名(alldb_backup.sql)は適宜変更します。
実行するとパスワードを求められるので、root ユーザーのパスワードを入力します。(MAMP の初期設定ではユーザー名 root、パスワード root です)
これで、ユーザー xxxx のデスクトップに alldb_backup.sql が作成されます。
特定のデータベースだけをバックアップしたい場合は、--all-databases の代わりにデータベース名を指定します。
MAMP のバージョンによる違い
MAMP 6 では mysqldump は通常 /Applications/MAMP/Library/bin/ にありますが、MAMP 7 以降では MySQL のバージョンごとにフォルダが分かれており、場所が異なる場合があります。
もし mysqldump の場所がわからない場合は、以下のコマンドで検索できます。
例えば、アップデート後の MAMP 7 では以下のように複数の場所に存在します。
- /Applications/MAMP/Library/bin/mysql80/bin/mysqldump
- /Applications/MAMP/Library/bin/mysql57/bin/mysqldump
MAMP で使用している MySQL のバージョンは、MAMP アプリの 「Preferences」→「Server」 から確認できます。必ず実際に使っている MySQL のバージョンに対応する mysqldump を使ってください。
新しい MAMP をダウンロード
MAMP ダウンロードページから希望のバージョンを入手します。
この例では、7.2.0 Intel CPU macOS のインストーラー(以下)をダウンロードしました。
インストールを実行
インストーラーをダブルクリックして起動します。
「続ける」をクリックすると以下のようなメッセージが表示されます。
以下のような注意事項が記載されています。
このインストーラーは、MAMPフォルダとMAMP PROアプリケーションをアプリケーションディレクトリにインストールします。MAMPフォルダを移動したり、名前を変更したりしないでください。
インストーラーが既存のインストールを検出した場合、/Applications/MAMP/htdocsと/Applications/MAMP/conf/ssl内のデータは保持され、既存のデータベースは新しいインストールにコピーされ、古いMAMPフォルダの名前が変更されます。
「続ける」をクリックして、指示に従って再インストールします。デフォルトのまま進めれば特に問題ないと思いますので、以降の手順は省略します。問題がなければ以下のように表示されます。
インストールが完了すると、古い MAMP フォルダはリネームされ、新しい MAMP が /Applications/MAMP として配置されます。
古い MAMP のフォルダは日時が追加された名前に変更されます(以下の例では2回アップデートしているので2つの古い MAMP があります)。
名前が変更された元の古い MAMP のフォルダを確認すると、htdocs フォルダと起動ファイル(MAMP.app)は新しい MAMP フォルダに移動されてなくなっていますが、その他のファイルやフォルダは独自に追加したものを含め保存されています。
独自に追加していたフォルダなどがあれば、必要に応じて古い MAMP のフォルダやバックアップから新しい MAMP へコピーします。
新しい MAMP の起動ファイル(MAMP.app)をダブルクリックして MAMP を起動します。
MAMP が問題なく起動すれば、再インストール作業は完了です。ダウンロードしたインストーラーは不要なので削除できます。
ポートなどの設定はデフォルトに戻っているので、必要に応じて変更します。
MAMP 7 では PHP のバージョンは、8.3.14 または 8.4.1 が選択できます。
また、データベースは、MySQL 5.7.44 または MySQL 8.0.40 が選択可能になっています。
設定を再適用
必要に応じて httpd.conf、httpd-vhosts.conf、php.ini などを編集し、以前の環境を再現します。
MAMP で mod_rewrite を有効にする
MAMP 7 では、デフォルトで mod_rewrite モジュールが有効になっていません。
そのため、.htaccess に RewriteEngine On を書いていても無効になり、RewriteRule ディレクティブなどが動作せず「Not Found エラー」や「500 Internal Server Error」が発生することがあります。
例:エラーログ(/Applications/MAMP/logs/apache_error.log)に以下のようなメッセージが出ます。
mod_rewrite モジュールを有効に
Applications/MAMP/conf/apache/httpd.conf を開き、以下の行を探してコメントアウトを外します。
#LoadModule rewrite_module modules/mod_rewrite.so
以下のように行頭のハッシュ (#) を削除します。
LoadModule rewrite_module modules/mod_rewrite.so
設定を保存したら、MAMP を終了して再起動します。
なお、MAMP のデフォルトでは以下のように .htaccess が使えるように AllowOverride All になっていますが、もし、独自に設定を変更している場合は、この値も確認してください(.htaccess を機能させるには、httpd.conf 内で AllowOverride を All に設定する必要があります)。
<Directory "/Applications/MAMP/htdocs">
Options All
AllowOverride All
Require all granted
<IfModule xsendfile_module>
XSendFilePath "/Applications/MAMP/htdocs"
</IfModule>
</Directory>
MAMP ドキュメント:Enabling mod_rewrite in MAMP
.htaccess 側の変更
MAMP 6 までは Apache モジュール版の PHP(mod_php)が使われていましたが、MAMP 7 からは php-fpm(FastCGI Process Manager)が使われるようになりました。
そのため、.htaccess に書いた php_value や php_flag は利用できなくなります。
また、SetEnv を .htaccess から PHP に渡していた場合(例:環境変数による設定切り替え)、反映されなくなるケースがあります。
php_value がエラーになる
.htaccess で使えていた php_value 系ディレクティブが MAMP 7 では使えなくなります。
例えば、以下のような記述があると、Internal Server Error になります。
php_value upload_max_filesize 1024M
php_value post_max_size 1024M
php_value memory_limit 1024M
エラーログ(/Applications/MAMP/logs/apache_error.log)には次のように表示されます。
対応策
.htaccess の php_value は削除し、代わりに php.ini の該当部分を編集します。
upload_max_filesize = 1024M
post_max_size = 1024M
memory_limit = 1024M
設定変更後、MAMP を再起動すると反映されます。
SetEnv が効かない場合
MAMP 6 までは .htaccess の SetEnv で設定した環境変数を PHP から参照できましたが、MAMP 7 では PHP が php-fpm(FastCGI)で動くようになったため、そのままでは PHP 側に届きません。
例: 以下を .htaccess に書いても
SetEnv APP_ENV local
PHP 側で確認しても値を取得できません。
$env = getenv('APP_ENV'); // 値を取得できない
対応策
.htaccess ではなく、httpd.conf または httpd-vhosts.conf に以下を記述します。
SetEnv APP_ENV local
PassEnv APP_ENV
- SetEnv … Apache 側で環境変数を定義
- PassEnv … 定義した変数を FastCGI 経由で PHP に渡す
以下は、httpd-vhosts.conf への記述例です。
<VirtualHost *:80>
DocumentRoot "/Applications/MAMP/htdocs/example"
ServerName example.localhost
SetEnv APP_ENV local
PassEnv APP_ENV
</VirtualHost>
保存後、MAMP を再起動すれば、getenv('APP_ENV') や $_ENV['APP_ENV'] から参照できるようになります。
.html を PHP として実行する場合
MAMP 6 までは、.html を PHP として実行したいときに以下を .htaccess に記述できました(mod_php を使っていたので AddType が有効だった)。
AddType application/x-httpd-php .html
しかし、MAMP 7 では PHP が php-fpm(FastCGI)に変わったため、この書き方では機能せず、PHP が Apache に正しく関連付けられないため、アクセスするとファイルのダウンロードダイアログが表示されたりします。
対応策
MAMP 7 では、mod_php が標準で無効化され、FastCGI(php.fcgi)経由で PHP を実行する構成になっているため、mod_php 向けの AddType では効かず、FastCGI 用のハンドラを指定する必要があります。
.htaccess の設定を以下のように AddHandler と php-fastcgi を使った書き方に変更します。
※ MAMP のバージョンや PHP バージョンによって、使用するハンドラ名(php-fastcgi)が異なる可能性があります。
AddHandler php-fastcgi .html
変更を保存後、MAMP を再起動します。
※ 修正してもダウンロードダイアログが出る場合は、ブラウザキャッシュを削除するか、シークレットモードで確認してください。
補足:MAMP 7 での AddType の扱いについて
「AddType が使えなくなった」と誤解されそうですが、無効になったのは PHP 実行を関連付ける特殊な AddType だけです。
フォントや画像などの MIME タイプを指定する AddType は、MAMP 7 でも問題なく機能します。
AddType application/vnd.ms-fontobject .eot
AddType application/x-font-ttf .ttf
AddType application/x-font-opentype .otf
AddType application/x-font-woff .woff
AddType image/svg+xml .svg
AddType image/x-icon .ico
理由
- MAMP 7 では mod_php が外れて php-fpm(FastCGI)に切り替わったため、.htaccess から直接 PHP の挙動を変えることができなくなりました。
- 一方で、AddType や AddHandler のように Apache がファイルをクライアントにどう送信するかを決めるディレクティブは Apache 側の処理なので、これまで通り .htaccess で有効です。
.html を PHP として実行させるリスク(参考)
セキュリティ的には .html を PHP として実行させるのは、意図しないファイルが PHP として実行されるなど、リスクが高いので、本番環境では推奨されません。
バーチャルホスト
バーチャルホストを設定している場合は、httpd.conf で Virtual hosts の機能を有効化し、httpd-vhosts.conf に既存の設定を追加する必要があります。
Virtual hosts の有効化
httpd.conf で以下の記述を探して、#Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf の行頭のハッシュ (#) を削除します。
# Virtual hosts
#Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
次のように変更して保存します。
# Virtual hosts
Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
httpd-vhosts.conf の編集
httpd-vhosts.conf にバーチャルホストの設定を追加します。
httpd-vhosts.conf は Applications/MAMP/conf/apache/extra/ に配置されています。
以下は、/Applications/MAMP/htdocs/example に配置したサイトに http://example.localhost/ でアクセスできるようにする例です。
<VirtualHost *:80>
DocumentRoot "/Applications/MAMP/htdocs/example"
ServerName example.localhost
<Directory "/Applications/MAMP/htdocs/example">
Require all granted
</Directory>
</VirtualHost>
変更を保存後、MAMP を再起動します。
関連項目:バーチャルホストの設定