我与通行证Nginx 1.2.4结合使用PHP-FPM 5.4.8,fastcgi并尝试将自定义参数传递给PHP。这是我到目前为止找到的选项:
使用
env指令在中设置环境变量nginx并通过getenv()或$_ENV从中获取环境变量PHP。问题是env仅在main上下文中运行,而我需要在上下文中设置参数server。fastcgi_param为此使用指令。
我尝试使用更改某些参数的值,fastcgi_param但未成功:
nginx:
fastcgi_param PATH_INFO "/var/tmp";
PHP:
我检查了所有可以找到的预定义数组:
echo '<pre>';
echo "\n".'$GLOBALS'."\n"; var_dump($GLOBALS);
echo "\n".'$_SERVER'."\n"; var_dump($_SERVER);
echo "\n".'$_GET'."\n"; var_dump($_GET);
echo "\n".'$_POST'."\n"; var_dump($_POST);
echo "\n".'$_FILES'."\n"; var_dump($_FILES);
echo "\n".'$_REQUEST'."\n"; var_dump($_REQUEST);
echo "\n".'$_SESSION'."\n"; var_dump($_SESSION);
echo "\n".'$_ENV'."\n"; var_dump($_ENV);
echo "\n".'$_COOKIE'."\n"; var_dump($_COOKIE);
echo "\n".'$php_errormsg'."\n"; var_dump($php_errormsg);
echo "\n".'$HTTP_RAW_POST_DATA'."\n"; var_dump($HTTP_RAW_POST_DATA);
echo "\n".'$http_response_header'."\n"; var_dump($http_response_header);
echo "\n".'$argc'."\n"; var_dump($argc);
echo "\n".'$argv'."\n"; var_dump($argv);
echo '</pre>';
唯一显示的PATH_INFO是$_SERVER:
var_dump($_SERVER); // ["PATH_INFO"]=> string(0) ""
但是nginx没有考虑我设置的值。
Q1:我需要在nginx/php级别上配置任何内容以使fastcgi_param指令生效吗?
问题2:fastcgi_param指令是否仅限于预定义的参数列表(例如,我可以设置PATH_INFO但不能设置自己的自定义变量,例如FOO)?
问题3:如果问题2:是,是否可以将自定义参数从Nginx传递给PHP?
fastcgi.conf和fastcgi_params,但不fastcgi-php.conf:你从哪儿得到它?您介意通过pastebin共享它吗?