08/04/26 05:24:31
>>91
すみません。自己解決しました。
初めの説明がちょっとおかしかったりしてるので補足します。
Zend_DateObjectの1016行目で、(ここ最初にちゃんといえてなかったです)
if (!@timezone_open($zone)) {
となっていますが、このZend_Dateのコンストラクタの第一引数がnullだと、
上記の$zoneがintのタイムスタンプで入ってきます。
そうすると、timezone_open()はタイムゾーン文字列が渡されることを期待しているので、
E_WARNINGを発しますが、@で抑制されます。(通常は。)
しかし、独自のエラーハンドラをすべてのエラーレベルに対して設定していて、
そのハンドラの中で@付きのエラー(ハンドラ内でのerror_reporting()の戻り値が0の場合)に対して適切な処理を行っていないと、
本来の@によるエラー抑制は無視され、処理が停止します。
このためnew Zend_Date(パラメータなし)がこけていました。
これは、Zend_Loaderの160行目でもおきます。。
(独自エラーハンドラのせいで@fopen()の@が効かないので)
E_WARNINGに対しても独自のエラーハンドラを適用している場合は、ZFでは色々と気をつけないといけないみたいです。
以上、お騒がせしました。