Я использую 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
не принимается во внимание.
В1: Нужно ли что-то настраивать на nginx/php
уровне, чтобы fastcgi_param
директива вступила в силу?
Q2: fastcgi_param
ограничена ли директива предопределенным списком параметров (например, я могу устанавливать, PATH_INFO
но не свои собственные переменные, такие как FOO
)?
Q3: Если да, то Q2: есть ли способ передать пользовательские параметры в PHP из Nginx?
fastcgi.conf
и ,fastcgi_params
но неfastcgi-php.conf
: где вы получили его от? Вы не против поделиться им через pastebin?fastcgi_pass 127.0.0.1:1028;
fastcgi_index index.php;
include conf/fastcgi.conf;
и conf / fastcgi.conf содержит остальные необходимые для fastcgi параметры и настройкиnginx
. С другой стороны, я забыл включить вещи при компиляцииnginx
в прошлом, ноnginx
отказался бы начать говорить, что не знал о некоторых директивах, которые я использовал: здесь ничего нет, никаких жалоб, но пока этоfastcgi_param
не работает: (Я попробую оригинальнуюubuntu nginx
упаковку и посмотрю, как она идет.ubuntu nginx
пакетом по умолчанию ...Вы можете изменить запрос, передав свои пользовательские переменные в заголовок запроса, например:
И тогда вы можете прочитать эти значения из заголовка запроса в вашем скрипте PHP.
источник