2005年07月30日

Zend Optimizerをめぐる実験

Fedora Core 4 + PHP 5.0.4 + (クライアント:Windows IE 6.0)という環境に、Zend Optimizer 2.5.10 を入れた。
すると、PHPのスクリプトが動かなくなったので調査開始。

すると、
header ("location: XXX.php ");
が動かなくなっていることが判明。絶対URLで指定しないといけなくなってしまった。

例えば、
header ("location: http://www.example.com/XXX.php");
などとしないといけない。
この辺のことを詳しくは、PHPのマニュアルを参照してください。

仕様として、絶対URLを指定したほうがよいとマニュアルにも書いてあるのだが、人の書いた部分まで直すのはちょっと面倒……などの理由でその他の解決方法がないか探した。
結局、Zend Optimizer 2.5.7 を入れ直したところ、相対URLでも動くようになった。
とりあえず、これで解決したことにしている。
しかし、2.5.10以降は相対URLではだめなのだろうか……。

ちなみに、解決方法も先のURLに書いてあって、


header("Location: http://".$_SERVER['HTTP_HOST']
.dirname($_SERVER['PHP_SELF'])
."/".$relative_url);

と書けば、絶対URLを作ってくれる。

だから、

function my_header($relative_url)
{

}
みたいなラッパーを作ってしまえば、変更はそんなに難しくはない。

ここでふと思った素朴な疑問が、ひとつ上のフォルダを指定している
header ("location: ../XXX.php");

みたいなものはどうなるのか?ということ。
結論からいうと、上記の解決方法で問題なく動きます。

ちなみに、ブラウザの指定でも、

http://www.example.com/oya/../kodomo.php

のような指定がデキルンデスネ。知らなかった。こうするとどこに飛んでしまうでしょう?
どうぞ実験してみてください。

posted by SDozono at 11:59| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス: [必須入力]

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
WebとCTI、VoIP技術の高みを目指して - 技術者の24時間
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。