2013年8月16日金曜日

phpMyAdmin「mcrypt 拡張をロードできません」のメッセージに対処

 自分の利用しているレンタルサーバ ServersMan@VPS.非常に安くて高機能であるのが気に入っているのだが,先日OSをCentOS6.4にアップグレードした.その結果,サーバは完全に初期化された.つまり,最初からサーバ構築を行わなければならなくなったのだ.その長い道のりを考えると気が重くなったものの,「新しいブドウ酒は,新しい革袋」と気を取り直し,作業を開始した.

 その過程で,phpMyAdmin をインストールした.今回は,yum からインストールできるようになったので,楽にクリアできるかと思っていたのだが,甘くはなかった.

 まず Apache のドキュメントルートに,phpMyAdmin がインストールされたとばかり思っていたのだが,そこには影も形もなかった.探し回り,/usr/share/phpMyAdmin/ にインストールされていることがわかり一安心.ドキュメントルート内に,そのディレクトリへのリンクを置いて対処した.

 さて phpMyAdmin のセットアップページを表示して,セットアップを開始しようと思ったのだが,それが表示できない.以前(phpMyAdmin2系,今回はphpMyAdmin3系)にはこのようなことはなかったと思う.それであれこれ調べてみると,phpMyAdminのディレクトリに,Apcheのアクセス制限がかかっているのに気づいた.納得してアクセス制限を解除して,セットアップページを表示することに成功した.

 しかし表示されたセットアップページは,全く見たことのないもので,手探り状態で設定を行う事になった. なんとかセットアップを完了し,config.inc.php をphpMyAdminのディレクトリにコピーしようとした.ところがここでまた,トラブルに見舞われた.

 セットアップページで生成したはずの config.inc.php を,phpMyAdminのディレクトリにコピーしても,phpMyAdminのトップページからログインができないのだ.これはどうしたものかと,途方に暮れつつ,あれこれ調べてみた.念のために,コピーした config.inc.php の中身を確認すると,セットアップの内容が反映されていなかった.どうやらコピー元とした config.inc.php が,セットアップページで生成された config.inc.php ではなかったようだった.するとセットアップで生成された config.inc.php は何処に?

 FINDしてみると,いくつかのディレクトリに config.inc.php が見つかった.その中からセットアップの内容を反映している config.inc.php を探してみると,それは,/var/lib/phpMyAdmin/config/ に存在した.

 中身を確認したので,今度は問題ないだろうと思い,phpMyAdmin のディレクトリにコピーし,再びログイン.しかしまたしてもログイン不能.壁にぶち当たってしまった.雰囲気としては,やはり phpMyAdmin が config.inc.php を読み込んでいない感じだった.

 そこで考える.ということは,もしや設定ファイルである config.inc.php を格納する場所が違うのではないか?それでとりあえず config.inc.php の存在するすべてのディレクトリをチェック.その結果,候補としてが上がってきた. config.inc.phpを /etc/phpMyAdmin/ にコピーし,再びログインにチャレンジ.

 今度はログインをクリアし,ようやく phpMyAdmin のトップページを表示することができた.しかしまたしても怪しげな表示が…

 トップページの下方に, 「mcrypt 拡張をロードできません」との表示が,いかにもこれはやばいぞ!という感じで,赤く燃え上がっていたのだ!

 確かに以前 phpMyAdmin を yum ではなかく,ダウンロードしてインストールしていた頃は,mcrypt も同時にインストールしていた.しかし今回は yum が依存関係を管理しており,phpMyAdmin をインストールした際に,同時にインストールされたと記憶していた.実際,確認してみると,それは既にインストール済みだった.

 となると,警告メッセージの続きにあったように,「PHP の設定を確認してください」ということになる.しかしどこを設定すれば良いのか,すぐにはわからなかったので,ググってみた.すると下記のブログ記事を発見した.

さくらVPSとデジタルモノ好きの備忘録:
CentOS6.4(64bit)「mcrypt 拡張をロードできません。PHP の設定を確認してください」で七転八倒
この記事のおかげで,この警告メッセージの謎が解けた.インストールされた mcrypt の設定ファイル(PHP拡張設定ファイル)である mcrypt.ini の記述が間違っていたのだ.この記事にあるように訂正すると,あの不吉な赤いメッセージは消え去っていた.

 今思えば,Apache のエラーログに下記のメッセージが出力されていることには気づいていた.
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/module.so' - /usr/lib64/php/modules/module.so: cannot open shared object file: No such file or directory in Unknown on line 0
ただ警告メッセージであり,別段運用上支障は無かったので,警告は知っていたのだが,放置していたのだった.エラーの Apache モジュール名が,module.so というあまりにも抽象的な名称だったので,まさかこれが mcrypt の設定に関係していたとは,考えてもみなかったのだ.

 ということで,phpMyAdmin3系 のインストールと設定は,何とかクリアできた.お疲れ様でした<(_ _)>

0 件のコメント:

コメントを投稿