猫鯖:PHPが死んでた

ふとapacheを再起動したらhttpdが落ちる。Coredumpまで吐きやがって・・・
messageのログを見ると、phpが原因で落ちてる雰囲気
Apacheのバージョンはこちら

Apache/2.2.6 (FreeBSD) mod_ssl/2.2.6 OpenSSL/0.9.7e-p1 DAV/2 PHP/5.2.4 with Suhosin-Patch configured -- resuming normal operations

はき出されるメッセージ

Oct 29 08:55:00 nekosaba kernel: pid 10324 (php), uid 107: exited on signal 11
Oct 29 08:56:09 nekosaba kernel: pid 10833 (httpd), uid 0: exited on signal 11 (core dumped)

phpを外すと正常にApacheは起動する・・・やっぱphpか
と、いうことでpkg_deinstallして全部作り直してみるが、やっぱダメ
php単体だと問題が無く、php5-extensionsを入れるとダメなことから
モジュールがどっかおかしいらしいので
該当するモジュールを探してみるが、正直わからん(ノ∀`)
モジュールを入れたり外したりしてるうちに、何故かhttpdが上がるようになったけど
原因になるモジュールは相変わらず不明
そしてapacheのシャットダウン時にエラーが出るので、結局のところ未解決
これは困った・・・
httpd-error.logから抜粋

httpd in free(): error: junk pointer, too high to make sense
httpd in free(): error: junk pointer, too high to make sense
httpd in free(): error: junk pointer, too high to make sense
httpd in free(): error: junk pointer, too high to make sense
httpd in free(): error: junk pointer, too high to make sense
httpd in free(): error: junk pointer, too high to make sense
httpd in free(): error: junk pointer, too high to make sense
httpd in free(): error: junk pointer, too high to make sense
httpd in free(): error: junk pointer, too high to make sense
httpd in free(): error: junk pointer, too high to make sense
httpd in free(): error: junk pointer, too high to make sense
[Tue Oct 30 12:55:46 2007] [notice] caught SIGTERM, shutting down
httpd in free(): error: junk pointer, too high to make sense

phpを叩いてもkonozama

[root@nekosaba]/var/log# php -v
PHP 5.2.4 with Suhosin-Patch 0.9.6.2 (cli) (built: Oct 29 2007 09:58:58)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
php in free(): error: junk pointer, too high to make sense
Abort (core dumped)

さてどうしたものか・・・
ここは困ったときのgoogleさんですね(‘-‘*)
しかし国内の似た症状を示してるサイトは役に立たなかったので海外へ
BSDのMLからこんなのを発見
http://www.takizo.com/blog/2006/11/02/php-recode-caused-php-core-dump/
ほうほう、recodeを消せばいけるのか
というわけで依存含めてばっさりと削除

[root@nekosaba]/# pkg_deinstall recode php5-extensions-1.1 php5-recode-5.2.4_1
--->  Deinstalling 'php5-extensions-1.1'
--->  Deinstalling 'php5-recode-5.2.4_1'
--->  Deinstalling 'recode-3.6_6'

注:php5-extensions-1.1はお好みで
削除後↓

[root@nekosaba]/var/log# php -v
PHP 5.2.4 with Suhosin-Patch 0.9.6.2 (cli) (built: Oct 29 2007 09:58:58)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies

どうやら直った予感
apacheもちゃんと動作してるっぽい、良かった良かった
さて、さらに調べたところ、この問題は結構前からあるらしく
最近突然発生したってことは、今まで回避できてたってこと
なんで回避出来てたか調べたところ
PHPのマニュアルにありました。

PHP: GNU Recode 関数 – Manual
http://php.mirror.camelnetwork.com/manual/ja/ref.recode.php
拡張モジュール mysql または imap をロードした 後に recode を拡張モジュールとしてロードした場合に、
PHP のクラッシュおよび起動に関する問題が 発生する可能性があります。
これらの拡張モジュールの前に recode を ロードすることにより、問題を解決することができます。
これは、imap で使用されている c-client ライブラリおよび recode の両方が 固有の hash_lookup() 関数を有しており、
mysql と recode が固有の hash_insert 関数を有している ことによる技術的な問題です。
拡張モジュール mysql または imap をロードした 後に recode を拡張モジュールとしてロードした場合に、
拡張モジュール mysql または imap をロードした 後に recode を拡張モジュールとしてロードした場合に、
拡張モジュール mysql または imap をロードした 後に recode を拡張モジュールとしてロードした場合に、

そういうことですか・・・( ゚Д゚)
ということは消さなくてもOKだったことですね、と
使い道が(今のところ)無い(はず)なのでこのまま放置しておくとしよう
phpのextensionsはこういうことがたまにあるからなぁ・・・

タイトルとURLをコピーしました