2011年6月15日水曜日

(FreeBSD) PHP Warning: Module '***' already loaded in Unknown on line 0

phpコマンドを実行したら、こんな感じで、Warningメッセージが数十行、どどどどど~っと大量に出た [E:coldsweats02]



# php -v
PHP Warning:  Module 'pgsql' already loaded in Unknown on line 0
PHP Warning:  Module 'imap' already loaded in Unknown on line 0
PHP Warning:  Module 'posix' already loaded in Unknown on line 0
  ~略~
PHP Warning:  Module 'http' already loaded in Unknown on line 0
PHP Warning:  Module 'apc' already loaded in Unknown on line 0
PHP Warning:  Module 'sqlite3' already loaded in Unknown on line 0
PHP 5.3.6 with Suhosin-Patch (cli) (built: May 31 2011 15:09:33)
Copyright (c) 1997-2011 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies



なんだこれは?と思って、ネット検索してみると、同じモジュールを複数回読み込んでいる場合に出るwarningメッセージだそうで、たとえば設定ファイルの記述ミスなどのために、extensionを2回読み込むなどの可能性がある、とか。



身に覚えがないので、portupgrade -fしてportsであれこれ再インストールしてみるなどして、やっぱり直らない、とか思っているうちに、やっとわかった。



# php -i
  ~略~
PHP Warning:  Module 'apc' already loaded in Unknown on line 0
PHP Warning:  Module 'sqlite3' already loaded in Unknown on line 0
Additional .ini files parsed => /usr/local/etc/php/extensions-.ini,
/usr/local/etc/php/extensions.ini



/usr/local/etc/php/extensions.ini というファイル以外に、もう一つ、別のファイルが読み込まれている。



# ls -l
total 4
-rw-r--r--  1 root  wheel  920  5月 31 17:17 extensions-.ini
-rw-r--r--  1 root  wheel  920  6月 14 16:46 extensions.ini



ああ、思い出した。これまで、pecl-*をportupgradeしたとき、モジュールの登録順序のせいか、warningメッセージが出ることがよくあったので、古い設定ファイルをバックアップとして残しておいたんだった。



どうやら /usr/local/etc/php/extensions.ini だけでなく、/usr/local/etc/php/*.ini すべてをphpが読んでしまうらしい。



だから、バックアップファイルを残しておきたいなら、extensions-.iniではなくextensions.ini-にしておけばよかった、というわけだった [E:coldsweats01]





20110614



0 件のコメント:

コメントを投稿