揮発性のメモ2

http://d.hatena.ne.jp/iww/

FuelPHPのUriクラスが正しいUriを返さない

エイリアス機能なんかで、URLと実際のフォルダ名とが食い違っているとき
Uri::main() などのメソッドが返すURLはおかしくなる


http://localhost/hogehoge/piyo/fuga

プロジェクトhogehogeとしてhogehogeディレクトリに置いてあるとき

Uri::main() http://localhost/hogehoge/piyo/fuga
Uri::base() http://localhost/hogehoge/
Uri::string() piyo/fuga


http://localhost/hogehoge2/piyo/fuga
hogehoge2へアクセスしてもhogehogeへ飛ぶようにしているとき

Uri::main() http://localhost/piyo/fuga ← hogehogeの霊圧が消えた
Uri::base() http://localhost/
Uri::string() piyo/fuga


なぜこのような挙動になるのかは追っていない。
configでbase_urlを定義していれば防げそうだけど、baseを固定化したくないのでやめた。

暫定対処

<?
function getbase(){
    $url    = $_SERVER["REQUEST_URI"];
    $string = Uri::string();
    $base   = substr($url, 0, strpos($url,$string));
    return $base;
}

こんな関数を作ってごまかした。





fuelphp 逆引きガイド 電子書籍