🦊

M1でCakephp2を構築1〜php5.6はbrewでインストールできません〜

2022/08/08に公開

php7.4のサポートが終わろうとしているこの時代にphp5.6を使うCakephp2の環境構築を迫られたときの奮闘記1

php5.6でCakephp2を構築するのに Dockerを利用しました。
今回はなぜDockerで構築するに至ったかまでです。Docker構築は奮闘記2の予定。

なぜDocker?

結論から言うと、
phpなどのバージョン管理が容易くでき、Windowsとも同じ環境で構築ができる、そして後述するphp5.6-mcryptが入れられるからです。


つまづきポイント1 php5.6が入らない、PJごとの切り替えが大変

通常PHPはbrew installで入れられます。
brewはM1で必須アイテムと言って過言ではないのでなかったら先に入れときましょう。
https://brew.sh/index_ja

ですが、2022年現在brew installのインストールできるパッケージからphp5.6は消えています。サポートも切れているし、普通は古いものを新しいPCに入れないものですから当然といえば当然なのでしょう。

brew installのエラー

Warning: No available formula with the name "php5.6". Did you mean php@5.6, php@7.2, php@7.1, php@7.0, php@8.0, php@7.4, php@7.3 or php@8.2?

検索すればちらほら入れる方法も出てきますが、brewパッケージにphp5.6がいることが前提なものが多いです。無理やりいれた後、PJごとにphpを切り替えるのも一手間かかります。
正直ここの検索に時間をかなり費やしました。

私の場合は以下のコマンドで行けました。(こっちもbrewではある)
brew install shivammathur/php/php@5.6

PHPを切り替える際,switch-phpは使用できませんでした。

現在のバージョンを確認
$ php -v
現在のphpバージョンのリンクを外す
$ brew unlink php@8.1
使いたいバージョンをリンクさせる
$ brew link php@5.6

DockerはPJごとにphpを指定してコンテナを作成できるので優秀です!
もちろんphp5.6も使用OKでした。


つまづきポイント2 LAMP環境 composer installができない

当初はXAMPPで構築しようとしていたのでつまづいて辛酸を舐めております。
Windows環境ではうまく表示まで行ってもMacではなぜか構築がうまくいきませんでした。

Xamppではphp5.6対応のパッケージが公開されているのでダウンロードすれば使用可能です。Xamppでの引っかかりはCakephp2のCSSが表示されないこと。
mod_rewrite 有効化あたりがうまく行っていないのかも?と思いつつ一旦諦めに入ります。きっとMAMPでやればうまくいく!

つまづきポイント1のphp5.6を攻略した後なのでphp5.6は入っています。
MAMPで構築するにあたって、phpの古いverは表示されない仕組みでしたので力技を使います。
/Applications/MAMP/bin/php フォルダの各種 php8.0.0 などの名前を変更。phpの前に _(アンダーバー)を入れて保存します。

このままめしゃめしゃと進めて構築は完了です。と、言いたかったのですが、最大の問題にぶち当たります。

そう、composer installができない

Cakephpの構築にあたってComposer installは必須級。
なぜできないのか。

Root composer.json requires PHP extension ext-mcrypt * but it is missing from your system. Install or enable PHP's mcrypt extension.

ext-mcryptがないのである。このエラーを解消するのに必要なのはphp5.6-mcrypt。
検索するとubuntuに入れる方法は出てくるが、Macのターミナル(zsh)での解決方法がわからん。

Dockerを構築しよう・・・

必然的にXAMPP、MAMPを経てDockerへと誘われたのです。

次の記事で実際にDockerで構築の詳細を書き連ねていく予定です。
長い文章書くのは得意ではないので分割していきます。

https://zenn.dev/kitsune_love/articles/ef6bf76ff11cf4

Discussion