PATH_INFOが取れない場合
Windows上のlighttpdでCGIとして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に書かないといけないけど。