ナベブログ

written by M-Watanabe

MAMPでLaravelを起動したらPHPバージョンが合ってなくてエラー

プログラミングPC

今回の記事ではタイトル通り、MAMPでLaravelを起動してみたら
PHPバージョンが合ってなくエラーになった件です。

超主観的(とくに青い小文字にしたところとか)なので語弊のある言い方もするかもです。
鵜呑みにしないで「ふーん」程度でみてもらえればと。

 

以下、エラー内容です。

Fatal error: Composer detected issues in your platform: Your Composer dependencies require a PHP version “>= 8.1.0”

 

ふわっとした言い方になりますが、
おそらくPHPバージョンが 8.1.0以上じゃないとダメだよというエラーです。

 

PHPバージョンに焦点をあて、3つの立場に分けてみました。

  • MAMPのPHPバージョン
  • 自分のPCのPHPの環境変数PATH
  • Laravelの必要PHPバージョン

 

僕はエラー文を読んだとき「いずれかのPHPバージョンを上げる」方向性で行ったのですが、ダメでした。

そんなこともあって、同じように苦しむ人が少なくなるように僕がなんとか解決した方法を
できるだけ端的で、順番通りにやれば解決できるような書き方に努めました

 

MAMPのPHPバージョンについて

まずはMAMPのPHPについて分かったこと。

  • MAMPはダウンロードをすれば更新される
  • 更新をした上で、MAMPの最新PHPバージョンは8.0.8(執筆時2022年11月04日)
  • PHPバージョンが8.1.0以上なら解決したかも。現状はムリ。
  • ちなみに、MAMPのPHPバージョンをグレードダウンする方法なら検索するとすぐ見つかる

 

このことから、以下の仮説を立ててみました。

  • MAMP以外のもののPHPバージョンが8.1.0
  • MAMPのPHPバージョンが8.0.8なら、そこを上限に他のものがPHPバージョンのダウングレードする形にすれば解決するのでは??

この仮説にならって、他の2つのPHPバージョンを下げていきます。

 

自分のPCのPHPの環境変数PATH

Homebrewでインストールをした(ことを前提にして)PHPを確認していきます。

Homebrewが分からなったりインストールしていない方は、
以下の記事内のHomebrewのことが参考になるかと思います。

 

 

とりあえず以下コマンドでphpバージョンを確認。

php -v

 

次にターミナルで、以下のコマンド実行をします。

brew list

一覧の中にphp@7.4php@8.0があるか確認します。
(僕の場合は、ダウングレードが目的なのでphp@7.4があるかを確認しました)

 

もしなければ、以下のコマンドでPHPをインストールします。

brew install php@7.4

 

念のためbrew listphp@7.4のインストールを確認したら
以下のコマンドを実行してphp@7.4そのものの保存先パスを見てみます。

brew --prefix php@7.4

大体の方は以下のように返ってくることが多いです。

/usr/local/opt/php@7.4

 

次に自分のPCの環境変数PATHが、そのPHP@7.4に向いているか確認します。

まずは現状のPHPのバージョンを、php -vで確認してから以下のコマンドを実行。

which php

以下のように返ってきたら、想定しているPHP@7.4を向いています。

/usr/local/opt/php@7.4/bin/php


※「php -v」で確認したバージョンは、このパスのPHPを向いていることになります

 

余談ですが、「which php」での僕の場合は以下の保存パスになっていました‥。

/usr/local/bin/php

今となって真相はわかりませんが、おそらく「Mac PHP インストール」とかで検索して
PHPだけ単体で入れたのかもしれません。

 

ここからはさらに余談で、Macにあらかじめ用意されたphpコマンドなら「which php」で
以下の保存パスになることが多いかと。

/usr/bin/php

こっちのパターンの方の方が多いかもしれませんね。

 


↓ここからは自分のPCの環境変数PATHを修正して、そのPHP@7.4に向かせたい方の作業です。

 

まずはシェルの種類を確認したいので、ターミナルで以下のコマンドを実行します。

echo $SHELL

すると、MacOSの方はbashかzshが大体なので以下のように返ってきます。
適宜で読み合わせて下さい。

/bin/bash
または
/bin/zsh

ちなみにシェルを変更するには、以下のコマンド実行でできる。
chsh -s /bin/bash
または
chsh -s /bin/zsh

 

いよいよ環境変数PATHを確認していきます。
vi ~/.bash_profile
または
vi ~/.zshrc

ちなみにviコマンドの後は「ファイルのパス」です。
/Users/ユーザー名/.ファイル名で、Finderからも階層を辿れます。

 

viは、指定ファイルを編集するためのコマンドで
テキストエディタを開くイメージを持つといいかもしれません。以下の手順で編集していきます。

  • vi ファイルのパス」でコマンド実行
    【ここからノーマルモード
  • ターミナル画面が切り替わったら、キーボードで英数「i」をクリック
    【ここから挿入(insert)モード
  • 環境変数PATHなど、文字入力して編集
  • 編集を終えたいときは、まずキーボード「:」をクリック
    【ここからコマンドモード
  • 「:wq」と入力し、「enterキー」をクリック
    (wはwriteで書き込み・qはquitで終了。)
    (wqは書き込み後に終了。つまり保存終了)
    (ちなみに、ノーマルモードに戻りたければ「escキー」をクリック)
  • ターミナル画面が戻ったことを確認

 

viコマンドで想定している環境変数PATHの設定がなかったら。
上記のviコマンドの説明を参考にして、挿入(insert)モードで直接書き込みます。

今回の僕の場合だと、以下の2行を追記しました。

export PATH="/usr/local/opt/php@7.4/bin:$PATH"

export PATH="/usr/local/opt/php@7.4/sbin:$PATH"

 

viコマンドを使わない環境変数PATHの設定

ちなみにviコマンドを使わなくても、ターミナルで以下のようにコマンド実行すれば環境変数PATHの設定はできます。

 

まずはphp -vで、現状のPHPバージョンを確認

さらにwhich phpで、PHPのフルパスを確認。

 

【bashの場合】

echo 'export PATH="/usr/local/opt/php@7.4/bin:$PATH"' >> ~/.bash_profile

echo 'export PATH="/usr/local/opt/php@7.4/bin:$PATH"' >> ~/.bash_profile

source ~/.bash_profile

 

【zshの場合】

echo 'export PATH="/usr/local/opt/php@7.4/bin:$PATH"' >> ~/.zshrc

echo 'export PATH="/usr/local/opt/php@7.4/bin:$PATH"' >> ~/.zshrc

source ~/.zshrc

その後、ターミナルを再起動してからphp -vPHPバージョンが変わったか確認

 

でも個人的には、以下のような理由から、viコマンド使うことをオススメします。

・viコマンド使わないで環境変数PATHの設定すると、打ち間違えてもそのまま設定されてしまう。
つまり「気付かずに正しい環境変数PATHをしていない」
そして「前に間違って入れた環境変数PATHが悪さをする」可能性が出てきます。
・viコマンド使えば、「改めて環境変数PATHの設定が確認でき」
「間違っている境変数PATHの削除もできる」

 

Laravelの必要PHPバージョン

Lravelの必要PHPバージョンといっても、PHPの環境変数PATHの方を先にした後なら
Laravelをインストールするだけです。

 

まずはターミナルでMAMPの「htdocs」にディレクトリ移動。

cd /Applications/MAMP/htdocs

 

そしたら念のため、lravel new プロジェクト名ではなく
composerコマンドでLaravelのバージョン指定をした上でインストールします。

composer create-project "laravel/laravel=8.*" プロジェクト名

 

これでMAMPの「htdocs」ディレクトリ内に、Laravelができます。
あとはMAMPを起動して、以下のURLでブラウザ表示がうまくいけば・・・成功です!

http://localhost:8888/プロジェクト名/public/

 

ちなみにLaravelのバージョンが8なら、必要なPHPバージョンは7.3以上です。

参考までに、WikipediaでLaravelを調べると対応一覧表が出てきます。
下記にそのリンク先を載せておきます。

https://ja.wikipedia.org/wiki/Laravel

 

最後に1つ余談として。
注意すべきは、環境変数PATHで対応した「後」にインストールしたLaravelにすべきということです。

僕は対応のLaravelをversion7.8.9と作成してから環境変数PATHの設定を直し、
再度MAMP起動してブラウザ表示したのですが、どれも同じエラーがでました。

最初は、「Laravelの必要PHPバージョンは、環境変数PATHの設定でのPHPと足並みさえ揃えば順不同」
だと思っていたのですが、そうではないみたいです。