r.blog

$ bin/cake bakeでFailed to find a CLI version of PHP; falling back to system standard php executableになる件

2022/02/12 - 追記
そもそもローカル側でbakeは出来ないので、単純にローカルにphpをインストールしただけの記事になっております🙇‍♀️

- - - - -

CakePHPの構築を進めるにあたり、$ bin/cake bakeを打つと

Failed to find a CLI version of PHP; falling back to system standard php executable

でbakeが出来ませんでした。

和訳すると『CLI版のPHPが見つからず、システム標準のPHP実行ファイルにフォールバックしています。』とのことで、一旦PHP確認のため$ php- vを叩いてみると

command not found: php

でphpコマンドが使えない!
ということはそもそもマシンにPHPが入っていない😕
Dockerイメージ(php:X.X-apache)のせいでPHP入りとかなんとか思っていたけど、それはあくまでコンテナ内の話…

そもそもmacにはPHP入っていなかったっけと調べてみると、macOS MontereyからPHPが含まれなくなったとのこと。

パッケージはHomebrewで管理しているので、PHPもHomebrewでインストールします。

HomebrewでPHPをインストール

1.PHPのインストール

まずはHomebrewでインストールできるphpの確認

$ brew search php
==> Formulae
brew-php-switcher    php-cs-fixer@2       php@8.0              phpmyadmin           pup
php                  php@7.2              phpbrew              phpstan
php-code-sniffer     php@7.3              phplint              phpunit
php-cs-fixer         php@7.4              phpmd                pcp

色々出てきますが、phpがついたパッケージが検索されているっぽい。
php@8.0が最新なので、これをインストールしていきます。

$ brew install php@8.0


長々としたインストールが完了したらパッケージ確認コマンドで確認。

$ brew list

aprとか見知らぬパッケージが入ってましたが、phpに依存しているパッケージとのこと。php@8.0があればOKです。

ここで$ php -vをしてもまだコマンドは使えません。
ここでインストールしたphpを使いますと指定する必要があります。
(パスを通す、と言います)

2.パスを通す

パスを通す、という作業がいまいちわからない人(自分)向けに2通りの方法を紹介します。
やっていることは手作業で通すかコマンドでやるかの違いです。

1)手作業でパスを通す

設定ファイルはホームディレクトリ(Finderで家のマークのアイコンの、ユーザー名がついているディレクトリ)にあります。
設定ファイルは使用しているシェルによって変わりますが、自分はzshを使っているので.zshrcファイルになります。

.zshrcファイルを開き、下記を追記します。

export PATH=/opt/homebrew/opt/php@8.0/bin:$PATH


ターミナルに戻り、下記コマンドで設定を反映させます。

$ source ~/.zshrc


$ php -vで挙動を確認。
バージョンが表示されたらOKです🎉

2)コマンドでパスを通す

インストールしたときに出てきているIf you need to have php@8.0 first in your PATH, run:を実行します。

echo 'export PATH="/opt/homebrew/opt/php@8.0/bin:$PATH"' >> ~/.zshrc

ホームディレクトリにある.zshrcに'export PATH="/opt/homebrew/opt/php@8.0/bin:$PATH"'を出力して、という意味で、1の最初の作業と同じです。

その後の設定の反映は1と同じです。

これでphpが使えるようになりました👏

プロジェクトに戻り、$ bin/cake bakeを叩くとちゃんとタスクリストが表示されました。
※ただしbakeコマンドはコンテナ内だけしか出来ないので、単純にphpをローカルにインストールしただけになりました…


参考サイト

https://zenn.dev/datchlive/articles/c1faecb382355f
https://c-limber.co.jp/blog/1691
https://qiita.com/tetsu-upstr/items/7fa800488dc29228d7fd