nginx+php-fpmでPATH_INFOを取得してみた

前回の設定ではPATH_INFOが取得できず、404になってしまっていたので、修正を行いました。

その他、DOCUMENT_ROOTの値も変だったりしたので色々と見直しをしています。

正規表現を使って、「hoge.php/fuga」の様なURLが呼び出されたとき、スラッシュの前と後とを切り分けて、SCRIPT_NAMEと、PATH_INFOそれぞれの値に割り当てています。

location ~ \.php($|/) {  
    set $script $uri;
    set $path_info "";
    if ($uri ~ "^(.+\.php)(/.+)") {
        set $script $1;
        set $path_info $2;
    }
    fastcgi_pass    127.0.0.1:9000;
    include         fastcgi_params;
    fastcgi_index   index.php;
    fastcgi_param   SCRIPT_FILENAME    /path/to/documentroot$fastcgi_script_name;
    fastcgi_param   DOCUMENT_ROOT   /path/to/documentroot;
    fastcgi_param   PATH_INFO       $path_info;
    fastcgi_param   SCRIPT_NAME     $script;
    fastcgi_intercept_errors on;
}

DOCUMENT_ROOTSCRIPT_NAMEを指定しても中々上手く設定されない!、と思っていたら、「include fastcgi_params」を「fastcgi_param~」より下に記述していたので上書きされている事に気づきました。
(このことに気づくのに地味に時間をかけてしまった・・・。