PHP7.2 に mcrypt をインストールする方法(ただし非推奨!)

プログラム
プログラム
スポンサーリンク

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 7.1.x で推奨されなくなる機能 より引用

 
PHPの公式マニュアルでも mcrypt 関数を使わないことを強く推奨しています。

mcrypt_encrypt関数のマニュアル

PHP: Mcrypt 関数 - Manual

Remi リポジトリから mcrypt をインストール

PHP7.2 を Remi リポジトリ(remi-php72)からインストールしている場合は、PECL版の mcrypt 拡張モジュールのパッケージが提供されていますので、コマンド1行でインストールできます。(EPELリポジトリから libmcrypt もインストールされます)

$ sudo yum install php-pecl-mcrypt

libmcrypt のインストール

PHP7.2 を標準リポジトリなどからインストールしている場合は、libmcrypt → PECL版 mcrypt の順番でインストールします。libmcrypt は EPELリポジトリ、もしくはソースからコンパイルしてインストールします。

EPELリポジトリから libmcrypt をインストール

EPELリポジトリのインストール

$ sudo yum install epel-release

yum から EPELリポジトリをインストールできない場合は、RPMパッケージからインストールします。

$ sudo rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm
$ sudo rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7

libmcryp をインストールします。

$ sudo yum install libmcrypt-devel

ソースから libmcrypt をインストール

EPELリポジトリが使えない場合は、ソースから libmcrypt をインストールします。

libmcrypt のコンパイルに必要なパッケージをインストールしておきます。

$ sudo yum groupinstall development

SourceForge.net から libmcrypt のソースアーカイブ(libmcrypt-2.5.8.tar.gz)をダウンロードします。
libmcrypt 2.5.8 のダウンロードページ | SourceForge

適当な場所に解凍してコンパイル&インストールします。

$ tar xvzf libmcrypt-2.5.8.tar.gz
$ cd libmcrypt-2.5.8/
$ ./configure
$ make
$ sudo make install

/usr/local/lib/ の下に libmcrypt がインストールされます。

PECLソースから mcrypt をインストール

libmcrypt のインストールが終わったら、本題の PECL版 mcrypt をインストールします。

mcrypt のコンパイルに必要なパッケージをインストールしておきます。

$ sudo yum install php-devel
$ sudo yum groupinstall development

適当な場所に mcrypt のソースアーカイブをダウンロードして解凍します。

$ cd ~
$ wget https://pecl.php.net/get/mcrypt-1.0.1.tgz
$ tar zxvf mcrypt-1.0.1.tgz

コンパイルしてインストールします。「/usr/lib64/php/modules/」の下に「mcrypt.so」がインストールされます。

$ cd mcrypt-1.0.1/
$ phpize
$ ./configure
$ make
$ make test
$ sudo make install

mcrypt 拡張モジュールを読み込むように設定すればインストール完了です。

$ sudo vi /etc/php.d/30-mcrypt.ini
extension=mcrypt ←この1行を書くだけ

おわりに

mcrypt を使いたい!と言われた場合は、ていねいに説明して OpenSSL関数 を使ってもらいましょう。みんなが幸せになれます。

コメント

タイトルとURLをコピーしました