PHP5実行時エラー

症状

コマンドラインからPHPを実行すると、次のような警告が出る。

PHP Warning:  Module 'pcre' already loaded in Unknown on line 0
PHP Warning:  Module 'xml' already loaded in Unknown on line 0

スクリプトが動かないわけではない。

原因

/usr/local/etc/php/extensions.ini に次のように重複して定義されていたため(xml.soとpcre.soが2個ずつ定義されている)。

extension=mbstring.so
extension=ftp.so
extension=pcre.so
extension=xml.so
extension=pcre.so
extension=xml.so

これは、次のようにバージョンの異なるパッケージが重複してインストールされていたため。

# pkg_info | grep php5
php5-5.2.0          PHP Scripting Language (Apache Module and CLI)
php5-ftp-5.2.0      The ftp shared extension for php
php5-mbstring-5.2.0 The mbstring shared extension for php
php5-pcre-5.1.6_3   The pcre shared extension for php
php5-pcre-5.2.0     The pcre shared extension for php
php5-xml-5.1.6_3    The xml shared extension for php
php5-xml-5.2.0      The xml shared extension for php

こうなってしまったのは、pearをportinstallではなくpkg_addでインストールしたのが原因。このために古いバージョンのものが入ってしまい、メッセージでそれに気づいてアップグレードしようとしたものの、portupgradeを使わずにportinstallしたため、二重にインストールされていた。

対処法

pearとその依存パッケージを削除し、新たにportinstallでpearをインストール。

# pkg_deinstall php5-pcre-5.1.6_3 php5-xml-5.1.6_3
# pkg_deinstall pear
# portinstall pear
タイトルとURLをコピーしました