2段階認証のプラグイン「Two-Factor-Authentication」を有効化すると下記のような警告が発生しました。

==========================================================
Deprecated: Function mcrypt_get_iv_size() is deprecated in /usr/local/shigi/shigizemi/wp/wp-content/plugins/two-factor-authentication/includes/class-simba-tfa.php on line 510

Deprecated: Function mcrypt_create_iv() is deprecated in /usr/local/shigi/shigizemi/wp/wp-content/plugins/two-factor-authentication/includes/class-simba-tfa.php on line 519

Deprecated: Function mcrypt_decrypt() is deprecated in /usr/local/shigi/shigizemi/wp/wp-content/plugins/two-factor-authentication/includes/class-simba-tfa.php on line 539

===========================================================

「Deprecated: Function mcrypt_decrypt() is deprecated」でGoogle先生にお尋ねしました。
すると、「mcrypt_xxxxx」は、php7.1で非推奨、php7.2から廃止になったということです。

サーバにイントールされているphpのバージョンは7.2です。

しょうがないので、対策です。「mcrypt_xxxx」の代わりに「openssl」を使うことが可能なようです。

幸い、サーバにはopensslがインストールしてあるので、問題の「class-simba-tfa.php」のスクリプトだけを変更することにしました。

では、さっそく回避策を初めます。

【前提条件】

  1. WordPressのサーバには、すでにopensslがインストールされている。
  2. サーバにphp7.2がインストールされている。
  3. php7.1まで、対策されているので、しばらく待っていれば、7.2対策済みにUpdateされるはず。

<手順>

  1. class-simba-tfa.php の該当行を改修する。

1.class-simba-tfa.php の該当行を改修する。

(1) line 510 (510行目)を改修。

スクリプトをよく眺めてみると、510行目でphp7.1までは、対策がしてあるようです。
php7.2以上なら「elseif」へ飛ぶようにすれば、opensslが使えそうですね。

「phpversion() 」で、現在のphpのバージョン番号を取得できます。

509行目の分岐条件に、「phpversion() < ‘7.2.0’」を追記して、「phpのバージョンが、7.2.0より小さくて、かつ、mcrypt_get_iv_size が存在すれば、真」として、今までどおりすぐ下の return $this->is_php_71 ? の行を実行します。

そうでなければ(php7.2以上ならば)elseifの行へ行き、opensslがインストールされていればそれを利用します。

下記(511行目)のように改修しました。

この改修により、519行目に表示されていたエラーも消えたので、519行目はとくに対策をしていません。そのままにしています。なお519行目は、改修後には行送りされて521行目(マークされた行)になっています。

(2) line 539 (539行目)を改修。

次は、539行目です。2行送られているので、実際は541行目となります。上記と同様に542行目に回避策を施しました。

一応、これで、エラー表示は消えました。

おそらく、もうしばらく待てばphp7.2対策が施されたものがUpdateされるはずです。それを待ってもよいかも。