mcrypt.soが組み込めない

自宅にあるサーバのphpのバージョンは5.2系。

レンタルサーバでもphp5.3系が動かせるようになったのでバージョンアップといきたいが万が一のために5.2系と5.3系を切り替えて動かせるようにしてみた。

apacheの設定でwww1でアクセスすればphp5.2系が、www2でアクセスすればphp5.3系のcgi版が動くように。

ここまでは、順調に終了。

これまでphpMyadminの画面に「mcrypt 拡張をロードできません。PHP の設定を確認してください」と表示された状態でも特に支障がなかったので放置していたが、ついでなので調べてみることにした。

念のため、mcryptがインストールされているか確認したが、これはOK。

php.iniを見ると、
「extension_dir = “/usr/lib/pgp/modules”」
となっており、そのディレクトリの中にはちゃんとmcrypt.soもある。

phpinfo()のページを作成してphpの情報を見てみると、
「additional.ini file parsed」に、「/etc/php.d/mcrypt.ini」が含まれており、mycrypt.iniの中身には、
「extension=mcrypt.so」と書かれている。

でも、mcryptは有効になっていない。
apacheの再起動をしても動かない。
「extension=mcrypt.so」をphp.iniに記述しても動かない。
phpinfoの画面でCoufigureCommandの欄には「–with-mcrypt」のオプションも表示されていないので重複して読み込まれてもいないようだし、ログにもそれらしきエラーはない。
同じような形態でmbstringも使っているがこちらは大丈夫。
mcryptだけが組み込めない。

php-mcryptを一旦アンインストールし、yumで再インストールしても動かない。

半日近くもかかって、「mcrypt.so」の日付だけがかなり古いことに気が付いた。

で、バージョンを調べてみると、
[root@example]# php -v
PHP 5.2.16 (cli) (built: Dec 17 2010 14:09:03)

[root@example modules]# rpm -qa|grep mcrypt
php-mcrypt-5.1.6-15.el5.centos.1

ウ~ム、バージョンが違っとる。

そういえば、昔何だったか忘れたが、バージョンが同じでなければならないソフトがあったが、もしかして?

と、いうことで同じバージョンのものが見つからなかったので、yumでリポジトリを変更して確認してみると5.2.17のものがあった。

まぁ、phpも1つバージョンがあがるがいいでしょう、ということでこれらをインストール。

確認してみる。
[root@example modules]# php -m
[PHP Modules]
~省略~
mcrypt
~省略~

お~、出てきた、出てきた。

phpMyAdminを動かしてみると、警告表示はなくなっていた。

・・・ここでやめれば精神衛生上は問題なかった。

使っていたphpMyAdminのバージョンは3.3.1。
最新バージョンは3.5.1が出ているようだったので、ついでにアップデートして画面をみたら、
「設定ファイルに、暗号化(blowfish_secret)用の非公開パスフレーズの設定を必要とするようになりました。」という警告メッセージが。

ウ~ム、とめどなく続く環境整備・・・