Я використовую 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
директива набула чинності?
Q2: Чи fastcgi_param
обмежена директива попередньо визначеним списком параметрів (наприклад, я можу встановити, PATH_INFO
але не власні власні змінні, такі як FOO
)?
Q3: Якщо так, Q2: чи є спосіб передати спеціальні параметри PHP від Nginx?
fastcgi.conf
і ,fastcgi_params
але неfastcgi-php.conf
: де ви отримали його від? Ви не проти поділитися цим вмістом через pastebin?