PHP5.3.2環境で管理者画面の一部(options-general.php)で処理がコケる
-
options-general.phpにて、処理が途中でコケる不具合を発見致しました。
ブラウザで一般設定画面(options-general.php)を開くと、左メニューのプラグインの項目まで描画された後、何も描画されませんでした。
なお、Wordpress 2.9.2でも同様の不具合が発生しています。
当方環境は以下の通りです。
OS:CentOS5.4 32bit
httpd:2.2.15
PHP:5.3.2(memory_limitは128MBなのでメモリ不足は考えにくいです)
MySQL:5.1.48(文字コードはutf-8)
ブラウザ:Google Chrome 5.0.375.70
尚、Coreserverのほうは(PHP5.2.5)問題ありませんでした。現在原因を調べていますが、何か有力な情報がありますと幸いです。
-
当方も同じくエラーがでて困っています。
OS: Redhat linux ES 5.0
httpd: 2.2.17
PHP: 5.3.3
MySQL: 5.1.50で同じ現象。
Apacheのログは、一度のアクセスで(options-general.phpへの)
[Mon Nov 15 17:54:21 2010] [notice] child pid 908 exit signal Segmentation fault (11)
が3度でます。
PHP5.2では動作します。解決しました。
wp-includes/function.php
「function wp_timezone_supported()」内の
$support = true; を $support = false;に書き換えることです。理由
PHP5.3で新たに加わった関数(timezone_identifiers_list)のバグのようです。
これを直接呼び出すだけで、「Segmentation fault (core dumped)」が出るので。
(例)php -r ‘var_dump ( timezone_identifiers_list() );’
これをとりあえず使わないことにしたらOKという感じですね。早速、php.netにバグ報告しときました。
http://bugs.php.net/bug.php?id=53320バグではなくて・・・
php.ini , htaccess , date_default_timezone_set関数 など任意の方法で
date.timezone = Asia/Tokyo となるように行儀良く指定してあげれば良いです。
エラーが出るようにして動かしてれば、ご丁寧なwarningが出ますよ。faqですね
php.iniに「date.timezone = “Asia/Tokyo”」を入れても症状が治まりませんでした。
たとえばdate_default_timezone_set(‘Asia/Tokyo’);
var_dump ( timezone_identifiers_list() );というコードをPHP5.3.3で実行しても
Segmentation fault (core dumped)
が出ます。そちらは出ないのでしょうか。
すみません、timezone_identifiers_list のことばかりみていて、Segmentation fault の部分を見逃していました。
ちなみにうちは5.3.3で動いています。ところでdate_default_timezone_set(‘Asia/Tokyo’);でSegmentation faultというのはなんか、php5.3.3のインストおよびMySQLのインスト、のどこかが失敗していませんか?
当方はMySQLとPHPの連携が失敗していてSegmentation faultに苦しんだことがあります。
先月の話ですが。そうですか。ではインストール環境によって出てくるのかもしれませんね。
当方の環境を下記に上げておきます。OS: Redhat Linux ES5 64bit (kernel 2.6.18-128.1.6.el5xen)
rpm -qa | grep php (yumでのインスト−ル)
(レポジトリ:http://wing-net.ddo.jp/wing/extras/el5/SRPMS/)
php-xml-5.3.3-1.el5_1.wing
php-mcrypt-5.3.3-1.el5_1.wing
php-dba-5.3.3-1.el5_1.wing
php-snmp-5.3.3-1.el5_1.wing
php-embedded-5.3.3-1.el5_1.wing
php-soap-5.3.3-1.el5_1.wing
phpMyAdmin-3.3.5-1.el5_0.wing
php-odbc-5.3.3-1.el5_1.wing
php-imap-5.3.3-1.el5_1.wing
php-cli-5.3.3-1.el5_1.wing
php-xmlrpc-5.3.3-1.el5_1.wing
phpPgAdmin-4.2.3-1.el5_0.wing
php-mbstring-5.3.3-1.el5_1.wing
php-pgsql-5.3.3-1.el5_1.wing
php-recode-5.3.3-1.el5_1.wing
php-devel-5.3.3-1.el5_1.wing
php-common-5.3.3-1.el5_1.wing
php-pdo-5.3.3-1.el5_1.wing
php-mysql-5.3.3-1.el5_1.wing
php-enchant-5.3.3-1.el5_1.wing
php-pear-1.9.1-1.el5_0.wing
php-5.3.3-1.el5_1.wing
php-gd-5.3.3-1.el5_1.wing
php-intl-5.3.3-1.el5_1.wing
php-mssql-5.3.3-1.el5_1.wing
php-bcmath-5.3.3-1.el5_1.wing
php-pspell-5.3.3-1.el5_1.wing
php-ldap-5.3.3-1.el5_1.wingrpm -qa |grep http
httpd-2.2.17-1.el5_1.wing
httpd-devel-2.2.17-1.el5_1.wing
jakarta-commons-httpclient-3.0-7jpp.1
system-config-httpd-1.3.3.3-1.el5
httpd-manual-2.2.17-1.el5_1.wing
httpd-tools-2.2.17-1.el5_1.wing
httpd-devel-2.2.17-1.el5_1.wing/etc/php.ini
date.timezone = “Asia/Tokyo”
memory_limit = 64M
※ date.timezone = Asia/Tokyoや date.timezone = ‘Asia/Tokyo’
でもだめでした。
メモリ32MBではWordpress動作しませんでした。mysqlはmysql-5.1.50-1.el5_1.wing
rpm -qa | grep mysql
mysql-cluster-5.1.50-1.el5_1.wing
mysql-bench-5.1.50-1.el5_1.wing
mysql-embedded-devel-5.1.50-1.el5_1.wing
mysql-devel-5.1.50-1.el5_1.wing
mysql-embedded-5.1.45-1.el5_1.wing
mysql-libs-5.1.50-1.el5_1.wing
mysql-embedded-5.1.50-1.el5_1.wing
mysql-server-5.1.50-1.el5_1.wing
mysql-embedded-devel-5.1.50-1.el5_1.wing
php-mysql-5.3.3-1.el5_1.wing
mysql-5.1.50-1.el5_1.wing
mysql-test-5.1.50-1.el5_1.wing
mysql-5.1.50-1.el5_1.wing
mysql-connector-odbc-5.1.5r1144-4.el5_0.wing
mysql-libs-5.1.50-1.el5_1.wing64bit版だから影響あるんでしょうかねぇ。
timezone_identifiers_list 以外のDate関数は使えるので、ソースからコンパイルしたら動くのかも知れませんね。でも基幹システムなのでそう簡単に試せません。
そこで暫定的に、どうしようもなくなったら、とりあえずtimezone_identifiers_listを使わないように設定すればいいということかなぁと思います。http://bugs.php.net/bug.php?id=53320&thanks=3
に書きましたが、ソースからコンパイルするとうまく動きました。
phpinfo()
で比較すると–with-system-tzdata
があるとエラーが出て、ないと問題ない。ような感じです。
しかしソースの./configureではこのオプションを選べませんね・・・。アップデートしていくとおかしいのかな?
いきなりクリーンに5.3とかバイナリインストしてれば問題無いのかもしれませんね。てか、いずれにしてもソースからビルドするほうが無難だとは思いますね。
yumもレポジトリによるのかしら?php bugsの方での回答としては、
RedHatによってあてられたPatch(我々は反対したが)の影響ではないかということでした。
たぶんそれだと思います。
(–with-system-tzdataというoptionは、php.netの出しているソースにはないですからね)phpはかなり多くのパッケージは入っているのでyum管理したいんですけどねぇ。
いずれにしても、このオプション抜きで、rpmrebuildして試してみます。この件、解決できましたのでお知らせします。
ソースからのコンパイルインストールではなく現状維持での解決方法です(yum管理)
Wordpress 3.2からtimezone_identifiers_listの利用は必須になったようなので、
どうしようか悩んでいましたが解決できてよかったです。状況
Redhat Linuxでyum管理していると、timezone関連の関数が使えない問題に起因しています。PHP5.3以降で問題が発生しており、timezone_identifiers_list()を呼び出すと、Segmentation faultsがでます。対策
1. timezonedbの更新
pect upgrade timezonedb
とコマンドラインでアップデート2. timezonedbをphpのextensionとして読み込む
/etc/php.d/timezone.ini を作成し
extension=timezonedb.so
とする。php -r ‘timezone_identifiers_list();’
というコマンドラインでエラーが発生しないことを確認した上で、
Apacheを再起動すれば、timezonedbがTimezoneで使われ、本問題が回避できるようです
- トピック「PHP5.3.2環境で管理者画面の一部(options-general.php)で処理がコケる」には新たに返信することはできません。