こんにちは、ウチイダです。
最近またPHPを触ることが増えてきていて、Windows11のWSL2上にphpbrewで環境構築をしています。
今回はmcryptを使いたくなり、バリアントを追加しようとしたらうまくいかなかったというトラブルです。
バリアントをインストールしようとしたら、以下のようなエラーが。
$ phpbrew ext install mcrypt
Downloading https://pecl.php.net/rest/r/mcrypt/stable.txt via curl extension
[==================================================================] 5.00/5.00B 100%
Downloading https://pecl.php.net/rest/r/mcrypt/1.0.4.xml via curl extension
[==================================================================] 736.00/736.00B 100%
Downloading https://pecl.php.net/rest/r/mcrypt/stable.txt via curl extension
[==================================================================] 5.00/5.00B 100%
Downloading https://pecl.php.net/rest/r/mcrypt/1.0.4.xml via curl extension
[==================================================================] 736.00/736.00B 100%
Downloading https://pecl.php.net/get/mcrypt-1.0.4.tgz via curl extension
[==================================================================] 26.42/26.42KB 100%
===> Extracting to /home/y-uchiida/.phpbrew/build/php-7.4.23/ext...
===> Installing mcrypt extension...
Log stored at: /home/y-uchiida/.phpbrew/build/php-7.4.23/ext/mcrypt/build.log
Changing directory to /home/y-uchiida/.phpbrew/build/php-7.4.23/ext/mcrypt
===> Phpize...
Error: Command failed: phpize > /home/y-uchiida/.phpbrew/build/php-7.4.23/ext/mcrypt/build.log 2>&1 returns:
調べてみたところ、どうやらautoconfのパッケージが入ってなかったり、バージョンが古いと、phpizeでエラーするみたいです。
とりあえずautoconfをインストールします。
$ sudo apt install autoconf
再度バリアントのインストールを試みると、今度は別のエラーが出ました。
$ phpbrew ext install mcrypt
[ ] mcrypt extension is disabled.
===> Installing mcrypt extension...
Log stored at: /home/y-uchiida/.phpbrew/build/php-7.4.23/ext/mcrypt/build.log
Changing directory to /home/y-uchiida/.phpbrew/build/php-7.4.23/ext/mcrypt
===> Running make clean: /usr/bin/make -C '/home/y-uchiida/.phpbrew/build/php-7.4.23/ext/mcrypt' --quiet 'clean'
===> Phpize...
===> Configuring...
Error: Command failed: ./configure '--with-php-config=/home/y-uchiida/.phpbrew/php/php-7.4.23/bin/php-config' >> '/home/y-uchiida/.phpbrew/build/php-7.4.23/ext/mcrypt/build.log' 2>&1 returns:
調べてみたけど、よくわかりませんでした…
ふと、バリアントは、パッケージの本体がないとインストールできないという仕様に思い至りました。
WSLのほうでmcryptのパッケージを入れてなかったような気がしたので、インストール。
$ sudo apt-get install libmcrypt-dev
# ...(中略)...
The following NEW packages will be installed:
libmcrypt-dev
やっぱり入ってませんでした。
再度、mcrypt バリアントをインストールします。
$ phpbrew ext install mcrypt
[ ] mcrypt extension is already disabled.
===> Installing mcrypt extension...
# ...(中略)...
[*] mcrypt extension is enabled.
Done.
今度はうまくいったみたいです。
最後に、phpbrewで管理しているPHPに、バリアントを追加します。
$ phpbrew install 7.4.20 +mcrypt
===> phpbrew will now build 7.4.20
===> Loading and resolving variants...
# ...(中略)...
Congratulations! Now you have PHP with 7.4.20 as php-7.4.20
* To configure your installed PHP further, you can edit the config file at
/home/y-uchiida/.phpbrew/php/php-7.4.20/etc/php.ini
To use the newly built PHP, try the line(s) below:
$ phpbrew use php-7.4.20
Or you can use switch command to switch your default php to php-7.4.20:
$ phpbrew switch php-7.4.20
Enjoy!
ビルドしなおしなので、結構時間かかります。
phpinfo を見てみると、mcryptの項目が増えていることが確認できました。
まとめ
今回必要だったのは、以下のコマンドを実行することでした。
- autoconf パッケージのインストール( sudo apt install autoconf )
- mcyrpt パッケージのインストール( sudo apt-get install libmcrypt-dev )
- mcrypt バリアントを含めて、phpbrewで再ビルド(sudo phpbrew install 7.4.20 +mcrypt)
以上です。
あなたのお役に立てたらうれしいです。