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

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~」より下に記述していたので上書きされている事に気づきました。 (このことに気づくのに地味に時間をかけてしまった・・・。