[PHP-users 12121] session_write_closeのバグ?

HIRANO Nobuaki php-users@php.gr.jp
Tue, 10 Dec 2002 11:52:43 +0900


いつも拝見させていただいております。
平野と申します。

現在「出力されたHTMLソースの一部が欠ける」
という奇妙な現象に出くわしております。

こちらで検証できたのは
・PHP4.2.2
・RedHat Linux 7.2
・出力されたHTMLデータが4096バイトを超えたときに発生
・session_write_close(); を行うと発生
・session_write_close(); を行わずにPHPに勝手にcloseさせると発生しない
・どこが欠けるか特定できず。(<BODY>が <BODY と最後の > が欠けたり
 </HTML>が </ に欠けたり、下記実験ソースの「123456789」が欠けたり
 します。
・PHPをコマンドラインで実行しても再現。Apacheは無関係。

以下、実験に使用したソースです。ループの回数を1減らして出力を4090バイト
にすると正しく動作します。また、session_write_close();をコメントアウト
しても正しく動作します。

----------------------------------------------
<?php
session_start();
?>
<html>
<head>
 <title>tag lost</title>
</head>
<body>
<?php
// ここまでのHTMLソースは改行を含んで54バイト
// 続いてループで 10バイト×403=4030バイト
for($i=0;$i<403;$i++){
        print "123456789\n"; // 10byte
}
// ここから下のHTMLソースで16バイト
// 合計 54+4030+16=4100バイト
?>
</body>
</html>
<?php
session_write_close();
?>
----------------------------------------------

session_write_close(); しなければいい、といえばそれまでなのですが、
どなたか同じ現象にでくわして、解決された方がいらっしゃいましたら
ご教授お願いいたします。

・他の方も同じ現象が再現するか
・PHP4.2.3で再現するか

のあたりも情報頂ければ幸いです。

以上よろしくお願い致します。