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

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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~」より下に記述していたので上書きされている事に気づきました。
(このことに気づくのに地味に時間をかけてしまった・・・。

Author: SUSH
Link: http://blog.sus-happy.net/nginx-php-path_info/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.