PHP でデータを暗号化や複号化をする時によく使われていた mcrypt関数 が、PHP7.2でコアから削除されました。ただ OpenSSL関数 を使えば mcrypt と同じことができる上に処理も早いので問題ないはずなのですが、古いシステムからの移行時のつなぎや、色々な力関係などで(^^;) しかたなく mcrypt を使わなければならない場面もあるかと思います。そこで今回は、非推奨ですが PHP7.2 に mcrypt インストールする方法をご紹介します。
mcrypt が削除された理由
よく使われていた mcrypt ですが、実は10年以上まったくメンテされていないという もっともな理由で削除されました。ただし PHP7.2でも PECL(PHPの拡張ライブラリを提供しているリポジトリ)から mcrypt をインストールすることができます。
mcrypt 拡張モジュールは十年近くにわたって放置されており、極めて使いづらいものです。 そこで、この拡張モジュールを非推奨にしました。かわりに OpenSSL を使いましょう。 mcryptは PHP 7.2 でコアから削除されて、PECL に移る予定です。
PHPの公式マニュアルでも mcrypt 関数を使わないことを強く推奨しています。
Remi リポジトリから mcrypt をインストール
PHP7.2 を Remi リポジトリ(remi-php72)からインストールしている場合は、PECL版の mcrypt 拡張モジュールのパッケージが提供されていますので、コマンド1行でインストールできます。(EPELリポジトリから libmcrypt もインストールされます)
libmcrypt のインストール
PHP7.2 を標準リポジトリなどからインストールしている場合は、libmcrypt → PECL版 mcrypt の順番でインストールします。libmcrypt は EPELリポジトリ、もしくはソースからコンパイルしてインストールします。
EPELリポジトリから libmcrypt をインストール
EPELリポジトリのインストール
yum から EPELリポジトリをインストールできない場合は、RPMパッケージからインストールします。
$ sudo rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7
libmcryp をインストールします。
ソースから libmcrypt をインストール
EPELリポジトリが使えない場合は、ソースから libmcrypt をインストールします。
libmcrypt のコンパイルに必要なパッケージをインストールしておきます。
SourceForge.net から libmcrypt のソースアーカイブ(libmcrypt-2.5.8.tar.gz)をダウンロードします。
libmcrypt 2.5.8 のダウンロードページ | SourceForge
適当な場所に解凍してコンパイル&インストールします。
$ cd libmcrypt-2.5.8/
$ ./configure
$ make
$ sudo make install
/usr/local/lib/ の下に libmcrypt がインストールされます。
PECLソースから mcrypt をインストール
libmcrypt のインストールが終わったら、本題の PECL版 mcrypt をインストールします。
mcrypt のコンパイルに必要なパッケージをインストールしておきます。
$ sudo yum groupinstall development
適当な場所に mcrypt のソースアーカイブをダウンロードして解凍します。
$ wget https://pecl.php.net/get/mcrypt-1.0.1.tgz
$ tar zxvf mcrypt-1.0.1.tgz
コンパイルしてインストールします。「/usr/lib64/php/modules/」の下に「mcrypt.so」がインストールされます。
$ phpize
$ ./configure
$ make
$ make test
$ sudo make install
mcrypt 拡張モジュールを読み込むように設定すればインストール完了です。
extension=mcrypt ←この1行を書くだけ
おわりに
mcrypt を使いたい!と言われた場合は、ていねいに説明して OpenSSL関数 を使ってもらいましょう。みんなが幸せになれます。
コメント