Używam Nginx 1.2.4
w połączeniu z PHP-FPM 5.4.8
z fastcgi
przełęczy i próbuje przekazać parametry niestandardowych PHP
. Oto opcje, które znalazłem do tej pory:
używając
env
dyrektywy do ustawienia zmiennej środowiskowejnginx
i pobrania jej za pomocągetenv()
lub$_ENV
zPHP
. Problem polega na tym, żeenv
działa tylko wmain
kontekście, podczas gdy muszę ustawić parametr wserver
kontekście.używając
fastcgi_param
dyrektywy, ponieważ jest do tego przeznaczona.
Próbowałem zmienić wartości niektórych parametrów przy użyciu, fastcgi_param
ale 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_INFO
to $_SERVER
:
var_dump($_SERVER); // ["PATH_INFO"]=> string(0) ""
Ale wartość, którą ustawiłem, nginx
nie jest brana pod uwagę.
P1: Czy muszę coś skonfigurować na nginx/php
poziomie, aby fastcgi_param
dyrektywa zaczęła obowiązywać?
P2: Czy fastcgi_param
dyrektywa ogranicza się do wstępnie zdefiniowanej listy parametrów (np. Mogę ustawić PATH_INFO
wł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.conf
afastcgi_params
jednak niefastcgi-php.conf
: gdzie to masz od? Czy masz coś przeciwko udostępnieniu go za pośrednictwem pastebin?fastcgi_pass 127.0.0.1:1028;
fastcgi_index index.php;
include conf/fastcgi.conf;
a conf / fastcgi.conf zawiera resztę wymaganych parametrów i ustawień fastcginginx
. Z drugiej strony,nginx
w przeszłości zapomniałem o włączeniu różnych rzeczy , alenginx
nie chciałbym mówić, że nie wiedziałem o niektórych dyrektywach, których używałem: tutaj nic, żadnych skarg, alefastcgi_param
to nie działa: (Spróbuję oryginalnegoubuntu nginx
opakowania i zobaczę, jak to będzie.ubuntu nginx
pakietem ...Możesz zmodyfikować żądanie, przekazując zmienne niestandardowe do nagłówka żądania, na przykład:
Następnie możesz odczytać te wartości z nagłówka żądania w skrypcie PHP.
źródło