Max*_*Max 11 php nginx fastcgi php-fpm
我正在与passNginx 1.2.4结合使用并尝试将自定义参数传递给. 以下是我目前找到的选项:PHP-FPM 5.4.8fastcgiPHP
使用env指令设置环境变量 innginx并使用getenv()或$_ENVfrom获取它PHP。问题是env只在main上下文中操作,而我需要在上下文中设置参数server。
使用fastcgi_param专为此设计的指令。
我曾尝试使用更改某些参数的值fastcgi_param但未成功:
nginx:
fastcgi_param PATH_INFO "/var/tmp";
Run Code Online (Sandbox Code Playgroud)
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>';
Run Code Online (Sandbox Code Playgroud)
唯一显示的PATH_INFO是$_SERVER:
var_dump($_SERVER); // ["PATH_INFO"]=> string(0) ""
Run Code Online (Sandbox Code Playgroud)
但是nginx没有考虑我设置的值。
Q1:我需要在nginx/php级别配置任何东西才能使fastcgi_param指令生效吗?
Q2:fastcgi_param指令是否仅限于预定义的参数列表(例如,我可以设置PATH_INFO但不能设置我自己的自定义变量,例如FOO)?
Q3:如果是 Q2:有没有办法从 Nginx 将自定义参数传递给 PHP?
Krz*_*żyk 15
您可以通过 fastcgi_param 指令传递其他参数。我确定是因为我使用了这个功能。
我的典型 nginx 配置
server {
server_name localhost;
include conf/defaults.conf;
root /var/www;
location ~* "\.php$" {
fastcgi_param CRS "crs";
include conf/fastcgi-php.conf;
}
}
Run Code Online (Sandbox Code Playgroud)
以及 phpinfo() 输出的一部分:
...
_SERVER["USER"] fcgi
_SERVER["HOME"] /dev/null
_SERVER["FCGI_ROLE"] RESPONDER
_SERVER["REMOTE_USER"] no value
_SERVER["CRS"] crs
_SERVER["QUERY_STRING"] no value
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25361 次 |
| 最近记录: |