Я використовую 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?