我与通行证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共享它吗?