MAMPのApacheが落ちる

この記事は2025/08/21に作成されました。
要約
PHPへのパスを通しているとそれが原因の可能性が高い
MAMPが落ちる
この問題は、恐らくWindowsマシンだけ関係する話で、mac環境では発生しない問題だろうと思います。今回はWindows11 24H2環境のマシンで発生しています。
今時のPHP開発だと、Dockerを使ったりして開発するケースが多いと思いますが、学校で教えていたりする関係上、意外とMAMPやXAMPPのようなApache+PHP+MySQL(MariaDB)などが一緒になっている環境を利用することがあります。
いやいや、今更そんな方法でPHPプログラムの開発を教えるな、とも言われそうですが、如何せん学校というのは比較的閉鎖的であり、特にソフトウェアに関して言えば、Dockerみたいにある意味何でもできてしまうというソフトウェアはセキュリティ観点からインストールさせて貰えないケースが非常に多いのです。(インストールできても、PC止めると消えるとか、意味不明なところもあります)
ログを確認し、ポートのバッティングを疑う
こういう環境では仕方ないので、MAMPなどを利用して開発を行うのですが、あるときに私のマシンにインストールしているMAMPのうち、Apacheだけが直ぐに落ちるという現象に遭遇しました。
落ちる場合、まず確認するのはログですが、落ちたというログが記録されていない状況です。しかし、プロセスとして確認しても、MAMPのツールで確認してもApacheのプロセス、httpdは起動していません。
次に考えるべきは、ポートの競合です。通常、ApacheなどのWebサーバーはポート80番を利用します。私のマシンではWSL2環境のUbuntuなども入っているので、競合する可能性はあるのですが、ポート80番を確認しても、特に使用されていません。
MAMPの設定も確認しておきます。MAMPは他のソフトウェアとバッティングする可能性を考慮して、8888番でApacheは起動するように設定してありました(MAMP設定だとこれになります)
となると、ポートバッティングの可能性もありません。
さて、こうなってくるといろいろと厄介です。
何が落ちているのかをもう少し調べる必要が出てきます。
wevtutil qe Application /q:"*[System[(Level=2 or Level=1) and (TimeCreated[timediff(@SystemTime) <= 600000])]]" /f:text /c:5
を投げて、クラッシュしている原因を調べます。このコマンドを投げると直近の10分間にクラッシュした内容を、テキストで5件出してくれるので、クラッシュした直後であれば、原因が分かりやすいです。
障害が発生しているアプリケーション名: httpd.exe、バージョン: 2.4.33.0、タイム スタンプ: 0x60e4299b 障害が発生したモジュール名: php8ts.dll、 バージョン: 8.4.11.0、タイム スタンプ: 0x68890d1f 例外コード: 0xc0000005 フォールト オフセット: 0x000000000056db6e フォールト プロセス ID: 0x37D8 アプリケーションのフォールトの開始時刻: 0x1DC0F9A8898AA9D Faulting アプリケーション パス: C:\MAMP\bin\apache\bin\httpd.exe Faulting モジュール パス: C:\php8411\php8ts.dll Report Id: d8d3ec4a-66e2-4712-9bac-7f1e951e84d3 Faulting パッケージの完全名: Faulting パッケージ相対アプリケーション ID:
と出てきたので、完全にApacheではなく、PHPが原因となりそうです。
原因はPHP?
さて、ここで変なのが、php8ts.dll、 バージョン: 8.4.11.0となっている点。MAMPでは、8.3.1を指定しており、PHP8.4.11は指定していません。が、ここではPHP8.4.11が呼び出されてクラッシュしていることになります。
このマシンでは、先日PHP8.4.11を別途インストールをして、パスを通してありました。どうやらMAMPでは、PHPのパスを通していると、そちらを参照しにいくようになってしまっているようです。そのため、PHP8.4.11を読みに行き、本来読み込むはずの8.3.1と異なるため、他のファイルとの整合性が取れず、クラッシュした模様です。
8.4.11と共存させたく、MAMPの設定ファイルでDLLを明示的に指定して、8.3.1を読みに行くように設定を変更しましたが、特に効果は無く、残念ながらPHP8.4.11へのパスを通している設定を削除するのが一番の解決でした。
PHP8.4.11がそのままだと使えないので、PHP8.4.11をMAMP内に配置して、パスを通すかする必要が出てきそうですが、これでとりあえずMAMPのApacheは落ちなくなります。
あまりネットにも同様の情報は無かったので、参考になる方がいれば。
CTO / sekiguchi
技術系の責任者。AIの利用やAIへのデータ投入など活用するものに興味が向いている。PHPなどを用いてバックエンド開発を行うほか、サーバーの管理、運用を行う。 専門学校や大学、他社でのウェビナーによる講義もしている。