You can also use PCRE capturing inside virtual host configuration, to capture both SCRIPT_FILENAME and PATH_INFO without URL encoding:
location ~ ^(?<SCRIPT_FILENAME>.+\.php)$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$SCRIPT_FILENAME;
fastcgi_pass ...;
}
location ~ ^(?<SCRIPT_FILENAME>.+\.php)(?<PATH_INFO>.+)$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$SCRIPT_FILENAME;
fastcgi_param PATH_INFO $PATH_INFO;
fastcgi_param PATH_TRANSLATED $document_root$PATH_INFO;
fastcgi_pass phpfarm;
}