2010年1月27日

[PHP-users 34973] Re:output_add_rewrite_varで正しくリライトされない

はらいです。

catsmoon <catsmoon@xxxxx>様:
> > # となると、Linux でも output_buffering = 4096 で問題が起こるのでしょうか?
> >
> Linux
> Apache-2.2.3
> PHP-5.2.10

> output_buffering = 2048
> 上記の環境で再現できました。

うぉ、ついに Linux でも再現…。
catsmoonさん、ありがとうございます。

また、丹羽さん、中瀬さん、検証いただきありがとうございます。
お礼が遅れてすみません。

ちょっと気になるのは、単に出力バッファリングだけの問題だとしたら、
2000回の for ループでも現象が起こりそうなものじゃないか、ということです。

<?php ... ?> の外に記述したものだけが異常な結果になっているので、
PHP モードの外の部分は、何らかの出力の最適化をしていて、
その結果おかしなことになっている、という気もしています。

そこで、

【パターンA】
<a href="0001.html">0001</a>

というリンクを、

【パターンB】
<?php echo '<a href="0001.html">0001</a>' . "\n"; ?>

と書き換える、ということをしてみました。
再現しやすくするため、output_buffering = 1024 で試しました。

◆1 全行をパターンBに書き換えた場合

→ 全行、正常動作しました。

◆2 奇数行をパターンB、偶数行をパターンAで記述した場合

→ 全行、正常動作しました。

◆3 100行ごとにパターンAとBを混ぜた場合

→ パターンA の行のみ再現しました。

◆4 (A でも B でもなく) 全行をヒアドキュメント化した場合

→ 全行、正常動作しました。

以上から、

・(◆3より)PHP モードの外にあるソースが対象
・上の条件に加え、(◆2から)ある程度まとまったサイズで再現?
・不具合が起こる位置は、output_buffering のバッファサイズに依存

このあたりは言えそうです。
_______________________________________________
PHP-users mailing list PHP-users@xxxxx
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3


投稿者 xml-rpc : 2010年1月27日 08:49
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/92827
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。