「mcrypt 拡張をロードできません。PHP の設定を確認してください」

# yum -y install php-mcrypt

Setting up Install Process

Package php-mcrypt-5.3.3-1.el6.rf.x86_64 already installed and latest version

Nothing to do

インスト済なのに

# yum remove php-mcrypt

# yum -y install php-mcrypt

Installed:
php-mcrypt.x86_64 0:5.3.3-1.el6.rf

# service httpd restart

httpd を停止中: [ OK ]
httpd を起動中: [ OK ]

しても、

mcrypt 拡張をロードできません。PHP の設定を確認してください

(謎
php.iniを見ると、
;;;;
; Note: packaged extension modules are now loaded via the .ini files
; found in the directory /etc/php.d; these are loaded by default.
;;;;
phpの拡張モジュールは /etc/php.d にiniファイルを配置すればいいらしい。
そこには/etc/php.d/mcrypt.ini があった。
; Enable mcrypt extension module
extension=module.so
と書いてある。
# find / -name  module.so -print
しかし、見つからなかった。
その先の答えはコマンドプロンプトにあった。
# php
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
^C ※入力待ちになっているので、Ctrl+Cで止めなといけない。
こっちかな?
# php -v
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
PHP 5.3.3 (cli) (built: Feb 22 2013 02:51:11)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
64ビット版のLinuxのPHPが使うモジュールは、
/usr/lib64/php/modules/の下にあるらしい。
確かに
/usr/lib64/php/modules/module.so
は無く、
/usr/lib64/php/modules/mcrypt.so
がソレっぽかった。
/etc/php.d/mcrypt.ini を修正
extension=mcrypt.so
に書き換え、service httpd restartでOK。
 
トラブルが起こると、Linuxの中身に詳しくなれるね。
無線LANでも、/etc/sysconfig/network-scriptsの中のシェルファイルを読んでみたりと、
プロの運用でも一生読むことが無さそうなソースを読む機会に恵まれる。(大笑
※尚、この問題は現在(CentOS6.6)も修正されておりません。CentOS7では修正済。2014/11/3




コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA