2013年12月7日土曜日

CentOS 6.4 rpmforgeから取得したphp-mcryptの不具合(ファイルが読み込めません) - php5.3

Unable to load dynamic library '/usr/lib/php/modules/module.so'

学校も休日の今日。
何気なくPHPのバージョンを確認して悦に浸ろうとした時のこと。

[root@centos6 ~]# php -v
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/module.so' - /usr/lib/php/modules/module.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP 5.3.3 (cli) (built: Jul 12 2013 20:21:47)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies


え。
えええええええええええ!?


何? この警告。 許さない。絶対に


  Unable to load dynamic library '/usr/lib/php/modules/module.so'

module.soが読めていないみたいです。

早速調査開始。
拡張モジュール読み込み設定のあたりだと思うので、/php.d/以下のiniファイルに検索をかけてみました。

[root@centos6 ~]# find /etc/php.d/ -name '*.ini' -type f -print | xargs grep 'module.so'
/etc/php.d/mcrypt.ini:extension=module.so

ビンゴ!☆⌒d(*^ー゚)b
先日、このCentOS6.4サーバーでphp-mcryptの更新を行ったのですが、その時に作られたmcrypt.iniの中身がおかしかったみたいです。
念のため、mcrypt.soの位置を確認します。

[root@centos6 ~]# rpm -ql php-mcrypt
/etc/php.d/mcrypt.ini
/usr/lib/php/modules/mcrypt.so

読み込みモジュール名の書き換えだけで問題ないようなので、viで変更しました。__ロ(。_。*)ケシケシ♪

[root@centos6 ~]# vi /etc/php.d/mcrypt.ini
; Enable mcrypt extension mcrypt
extension=module.so  ← 削除しました。
extension=mcrypt.so  ← 追加しました。

設定ファイルを保存したら、Apacheを再読み込みさせて完了。

[root@centos6 ~]# /etc/init.d/httpd restart
httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]

[root@centos6 ~]# php -v
PHP 5.3.3 (cli) (built: Jul 12 2013 20:21:47)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

といった流れで、難なく解決しました。

いやいや。

[root@centos6 ~]# yum list installed | grep 'php-mcrypt'
php-mcrypt.i686         5.3.3-1.el6.rf    @rpmforge

[root@centos6 ~]# grep 'php-mcrypt' /var/log/yum.log
Dec 01 18:18:45 Installed: php-mcrypt-5.3.3-1.el6.rf.i686

rpmforgeめ。 設定ファイルの内容に誤りがあるとは・・・・・・。
面倒臭い。 (´⊆`;) いや、侮れない。


来週から行う稼働中サーバーのPHP5.4化作業もいろいろと気をつけよーっと。