PHP の調子が悪かったので

 最近、PHP の調子がどうも悪かった。おそらく PHP 5.2.1 にバージョンアップした際に(FreeBSD 上で portupgrade php5 としただけ)おかしくなったのかなあ。それ以降、apache を再起動した際やコマンドラインで PHP を使用したときに次のようなエラーメッセージが出るようになりました。

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/20060613/sqlite.so' - /usr/local/lib/php/20060613/sqlite.so: Undefined symbol "spl_ce_Countable" in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/20060613/soap.so' - /usr/local/lib/php/20060613/soap.so: Undefined symbol "ps_globals" in Unknown on line 0

 エラーメッセージの詳細な意味はわからないけど大雑把な意味はわかります。ライブラリーが読み込めないってことなので、今日になって試しにそれらのライブラリーを読み込まないようにして apache の再起動をしたりしてみました。

 # /usr/local/etc/php/extensions.ini

;extension=sqlite.so
;extension=soap.so

 とコメントアウト。これでエラーは出なくなったのですがどうも根本的な解決に至っていないような気がして気持ちが悪かったので、今度はコメントアウトではなく読み込む順番を変えたりしてみました。

extension=zlib.so
extension=zip.so
extension=xmlwriter.so
extension=xmlrpc.so
extension=xmlreader.so
extension=xml.so
extension=tokenizer.so
extension=spl.so
extension=sockets.so
extension=simplexml.so
extension=session.so
extension=posix.so
extension=pdo_sqlite.so
extension=pdo.so
extension=pdf.so
extension=pcre.so
extension=mysqli.so
extension=mysql.so
extension=mcrypt.so
extension=mbstring.so
extension=ldap.so
extension=json.so
extension=imap.so
extension=iconv.so
extension=hash.so
extension=gmp.so
extension=gettext.so
extension=gd.so
extension=ftp.so
extension=filter.so
extension=fileinfo.so
extension=exif.so
extension=dom.so
extension=dbase.so
extension=dba.so
extension=curl.so
extension=calendar.so
extension=bz2.so
extension=sqlite.so
extension=soap.so

 こうして最後に持ってくることでエラーは出なくなりました。逆に、先頭に持ってくるとエラーが再発することも確認しました。よくわからないけど、これで解決したみたいです。

comments powered by Disqus