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

harai @ netcompass.co.jp harai @ netcompass.co.jp
2010年 1月 26日 (火) 22:31:11 JST


はらいです。

検証してくださった皆様、ありがとうございます。

Johnathan <maillist @ kodokuman.com>様:
> php.ini パラメータ url_rewriter.tags
> <http://www.php.net/manual/ja/session.configuration.php#ini.url-rewriter.tags>
> あたりは変わった事ないですか?
> ちなみに、phpは5.2.6です。

url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"

でした。
もし、ここがおかしかったとすると、2000個が全部ダメになりそうな気がしていて、
1982個のリンクはちゃんとリライトできているというのがちょっと謎です。

ジョナサンさんからヒントを得て、phpinfo() と php.ini を見てみると、

output_buffering = 4096

となっていて、これを 8192 にすると、不具合のある箇所が半分に減り、
2048 にすると倍に増えました。

また、改行を CR+LF ではなくて LF のみにすると、
別の行で不具合が起こりました。
(テストソースのループを忠実に展開するなら LF のみが正しかったですね)

なお、ちょっと私の言葉足らずだったかもしれませんが、
ジョナサンさんに返信していただいた内容で、
以下の 2000回の for ループのテストケースでは私のところでも正常に動いています。

> > > <?php
> > > output_add_rewrite_var('a', '1');
> > > for ($i = 1; $i <= 2000; ++$i) {
> > >     printf("<a href=\"%04d.html\">%04d</a>\n", $i, $i);
> > > }

ループを使わずに 2000行を静的に記述した場合に、不具合が起こっています。

よろしくお願いします。


PHP-users メーリングリストの案内