PHP:mcryptのワナ
2014-11-17
某サーバにて某アプリケーションを移設したところ、、、、以下のエラーが発生。
Fatal error: Call to undefined function: mcrypt_get_iv_size()
見るからに mcrypt 関係のエラー。
mcrypt ってデフォルトで使えるのではなかったっけ??と思って一応調べてみると、、、少なくとも RedHat 系では明示的に rpm が分かれているのですな。
今まで気付かなかったけど、サーバ構築する度に何も考えず入れてたのかな??
ま、これはこれで良かったのだけど、、、yum で php-mcrypt を入れて、httpd を再起動。
動作確認、、、、しても、なぜか同じエラーが発生(-_-#
え?と思って今度はきちんと phpinfo() を見てみると、、、確かに mcrypt が有効になってない。
/etc/php.d/mcrypt.ini もきちんと設置されてるし、中の設定もコメントにされているわけでもない。
なんだこれ???
仕方がないのでネット上で情報をあさってみると、、、、mcrypt.ini の中身がおかしいことがある??
確かめてみると、、、
extension=module.so
( ̄□ ̄;)!!
module.so ってなんだ!?
mcrypt.so じゃないのか??
extension=mcrypt.so
書き直してみたところ、phpinfo() でようやく mcrypt が出てきた。
httpd を再起動すると、、、正常動作!
しかし、なんなんだこれ!?
随分と酷いバグですな~
yum もあてにならんものですな。
ちなみに、RedHat EL6 での現象でしたが、諸事情により外部にアクセスできないサーバなので、リポジトリ上が更新されていないのが敗因だったと思われます。
当然、最新の状態に更新されているリポジトリであればこんなことは起きないでしょう。たぶん。