PATH_INFOが取れない場合

Windows上のlighttpdCGIとしてPHPを動作させる場合、PATH_INFOがうまく取得できない(昨日の記事)。調べてみると、そもそも$_SERVERにPATH_INFOというキーが存在しないようだ。REQUEST_URIとSCRIPT_NAMEは存在するので、それぞれの差分を取ればPATH_INFOと同じ値が取得できるはず。
というわけで、関数にしてみた:

function getPathInfo()
{
    if (array_key_exists('PATH_INFO', $_SERVER)) {
        return $_SERVER['PATH_INFO'];
    }
    $path_info = str_replace($_SERVER['SCRIPT_NAME'], '', $_SERVER['REQUEST_URI']);
    if (substr_count($path_info, '?') > 0) {
        // GETパラメータを除去
        $path_info = preg_replace('/\?.*/', '', $path_info);
    }
    return $path_info;
}

これでローカル環境をWindows上のlighttpdに移行できる。mod_rewriteを使う場合は、.htaccessが使えないのでルールをlighttpd.confに書かないといけないけど。