どうしてもMacのネイティブで、Brewから消えたり、もはやビルドできない古いPHPを使いたい時のテク
どうしてもPHP7.2とかが使いたい人がいると思います。はい、私もです。
でも、古いPHPは最近のMacだとビルドがめっちゃ難しいし、Brewもドンドン古いモノは消してきます。
そういうときは普通にDockerで良いのですが、どうしてもどうしても諸般の事情でMacのネイティブバイナリを使いたい人はいるでしょう。そういう人に向けてのテクです。
あ、AMD64(x64)ですが、RosettaがあるからM1でも大丈夫です。
オチ
XAMPPを使え!!
インストール
古来からの人はご存じxamppは古いものがきちんと残っています。
ところで、残念ながら(?) xamppは中身を取り出すのにインストーラーが必要です。気にならない人はそのままインストールすればよいでしょう。悪いものは多分はいらないと思います。
インストールすれば、、 /Applications/XAMPP/
にファイルが置かれるはずです。
あとはphpをフルパスでたたくだけです
/Applications/XAMPP/xamppfiles/bin/php -v
Taddaa!!!
いや、なんか気持ち悪くない?
まあしかし、ちょっと気分がよくないですよね。すくなくとも俺はXAMPPを見るのが嫌だ。
あと、何種類も用意ができないのも不便です。毎回インストールし直すのか??って話ですよ。いや何種類も古いPHPを用意する必要があるのが微妙ですが。
…という人は、UTMでMacのサンドボックスをつくってインストールしてファイルをひっこ抜くと良いですね。
とりあえずこれでMacの仮想環境をつくり、インストールします。そんでもってTerminalで
cd /Applications/XAMPP
sudo chown -R your_name:staff ./xamppfiles
tar cvzf ~/xampp.tgz ./xamppfiles
こんな感じにして展開したファイルを全部ゲットします。
なぜsudoでchownしているかはxamppがそういうものだからです。細かく言えばApacheとかの都合ですが、今回ほしい物はPHPだけなので問題ありません。
で、抜いたphpを実行する
$ cd /tmp
$ tar xvzf /path/to/xampp.tgz
$ mv xamppfiles 7.2.31
$ /tmp/7.2.31/bin/php -v
…で、これでうごけばうれしいんですが、多分そのまま実行するとこんなエラーが出ます
$ php -v
dyld[70380]: Library not loaded: /Applications/XAMPP/xamppfiles/lib/libcrypto.1.1.dylib
Referenced from: <B4459286-2A5E-37B7-9967-E87933FC48E5> /tmp/7.2.31/bin/php-7.2.31
Reason: tried: '/Applications/XAMPP/xamppfiles/lib/libcrypto.1.1.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/Applications/XAMPP/xamppfiles/lib/libcrypto.1.1.dylib' (no such file), '/Applications/XAMPP/xamppfiles/lib/libcrypto.1.1.dylib' (no such file), '/usr/local/lib/libcrypto.1.1.dylib' (no such file), '/usr/lib/libcrypto.1.1.dylib' (no such file, not in dyld cache)
XAMPPは最高なことに全部のライブラリを押し込んでくれています!が、そのdylibのpathが固定なのです。
せっかく色々なバージョンを同居させたいのだからこれでは困ります。
ので、dylibのpathをつなげてやる必要があります。
$ DYLD_LIBRARY_PATH=/tmp/7.2.31/lib /tmp/7.2.31/bin/php -v
PHP 7.2.31 (cli) (built: Jun 15 2020 13:53:15) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
$ DYLD_LIBRARY_PATH=/tmp/7.2.31/lib /tmp/7.2.31/bin/php -S 127.0.0.1:8080
PHP 7.2.31 Development Server started at Tue Jul 11 02:18:17 2023
Listening on http://127.0.0.1:8080
Document root is /tmp
Press Ctrl-C to quit.
Wow!!!やりましたね!!!
もっとがんばりたい(?)
- xamppfilesのなかは不要なファイルだらけです、消し込むとよいでしょう
- さらにこいつでphpenvを使いたい?そんな奇特な人がいるならまた書きますのでご連絡ください。
ではまた。
Discussion