Blogブログ

TORAT | 2021.12.24

MAMPのエラー対処法まとめ

  • MAMP
  • web制作

ブラウザにエラーメッセージを表示させる方法

MAMPは初期設定では、ブラウザにエラーメッセージを表示しません。
試しに、以下のPHPをブラウザで表示してみます。

echo $hello;

$helloは定義していないのでエラーになりますが、画面には何も表示されません。
これではどういう状態なのかわからないので、エラーメッセージをブラウザに表示するよう設定します。

該当のphp.iniのパスを確認する

パスはphpinfoで確認できます。
phpinfoは、MAMPのスタートページ内にあるリンクから飛べます。

例では、C:\MAMP\conf\php7.4.16\php.ini がパスです。

php.iniファイル内の「display_errors」を「on」に書き換える

上書き保存し、サーバーを再起動する

再起動しないと変更が反映されないので注意してください。
再起動ボタンはないので、停止→起動をします。

hello が定義されていないよ、というエラーメッセージを表示することができました。
これでエラーの原因をすぐに特定することができます。

MAMPのログの見方

MAMPのログファイルは、MAMP/logsディレクトリの中にあります。

主なログファイル

●PHP: php_error.log

●Apache: apache_error.log

●MySQL: mysql_error_log.err

tailコマンド

ログファイルを見るときに便利なのが、tailコマンドです。
tailは最終行から数行(標準は10行)を表示してくれます。
さらに-fオプションをつけると、ファイルが更新されたときに追跡してくれます。

tail -f php_error.log

よくあるエラー

Apache couldn’t be started because port 80 is in use by some other software.

ポート80は使用中です、というエラーなので、使用中のものを終了にすればOKです。
WindowsとMacでコマンドは異なりますが、流れは同じです。

①ポートを使用中のPID(プロセスID)を確認
②プロセスを削除

●Windowsの場合

netstat -aon | find "80" // ①ポート80を使用しているプロセスを確認
TCP         0.0.0.0:80             0.0.0.0:0              LISTENING       12345
TCP         [::]:80                [::]:0                 LISTENING       12345

taskkill /pid 12345 // ②プロセス削除
taskkill /f /pid 12345 // ②プロセス強制削除(上記で削除できない場合)

①で「’netstat’ は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。」と表示される場合は、環境変数の設定が必要です。

①Windowsの検索窓に「システム」と入力
②「システム環境変数の編集」をクリック
③「環境変数」をクリック
④システム環境変数内の「Path」を選択した状態で「編集」をクリック
⑤「新規」で「C:\Windows\System32」を入力し「OK」

●Macの場合

lsof -i:80 // ①ポート80を使用中のプロセスを確認
httpd    1234 user    4u  IPv6 0a123456b7c8d9012      0t0  TCP *:http (LISTEN)
httpd   12345 user    4u  IPv6 0a123456b7c8d9012      0t0  TCP *:http (LISTEN)

kill 1234 // ②プロセス削除

SQLSTATE[HY000] [2002] No such file or directory

php artisan migrate実行時のエラーです。
config/database.phpにsocketの追加をすることで解決しました。

// config/database.php
'unix_socket' => env('DB_SOCKET', '/Applications/MAMP/tmp/mysql/mysql.sock'),

MAMPが起動後すぐ終了してしまう

原因は誤ってPHPの旧バージョンを削除してしまっていたことでしたが、エラーメッセージも何も出ずにすぐに閉じてしまうので困りました。
MAMP/logs/MampAppErr.logで原因を特定できたので、削除してしまったバージョンのPHPを公式からインストールし直すことで解決しました。

この記事を書いた人

TORAT 管理者

関連記事

Recommend愛されているブログ