Używam Nginx 1.2.4w połączeniu z PHP-FPM 5.4.8z fastcgiprzełęczy i próbuje przekazać parametry niestandardowych PHP. Oto opcje, które znalazłem do tej pory:
używając
envdyrektywy do ustawienia zmiennej środowiskowejnginxi pobrania jej za pomocągetenv()lub$_ENVzPHP. Problem polega na tym, żeenvdziała tylko wmainkontekście, podczas gdy muszę ustawić parametr wserverkontekście.używając
fastcgi_paramdyrektywy, ponieważ jest do tego przeznaczona.
Próbowałem zmienić wartości niektórych parametrów przy użyciu, fastcgi_paramale nie powiodło się:
nginx:
fastcgi_param PATH_INFO "/var/tmp";
PHP:
Sprawdziłem wszystkie predefiniowane tablice, które mogłem znaleźć:
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>';
Jedyny do pokazania PATH_INFOto $_SERVER:
var_dump($_SERVER); // ["PATH_INFO"]=> string(0) ""
Ale wartość, którą ustawiłem, nginxnie jest brana pod uwagę.
P1: Czy muszę coś skonfigurować na nginx/phppoziomie, aby fastcgi_paramdyrektywa zaczęła obowiązywać?
P2: Czy fastcgi_paramdyrektywa ogranicza się do wstępnie zdefiniowanej listy parametrów (np. Mogę ustawić PATH_INFOwłasne zmienne niestandardowe, takie jak FOO)?
P3: Jeśli tak do Q2: czy istnieje sposób na przekazanie niestandardowych parametrów do PHP z Nginx?
fastcgi.confafastcgi_paramsjednak niefastcgi-php.conf: gdzie to masz od? Czy masz coś przeciwko udostępnieniu go za pośrednictwem pastebin?