ttt

getttyent

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

2011-06-14 23:59:00 | デジタル・インターネット

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

# 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-にしておけばよかった、というわけだった

20110614


コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。