Ich verwende Nginx 1.2.4
in Kombination mit PHP-FPM 5.4.8
einem fastcgi
Pass und versuche, benutzerdefinierte Parameter an zu übergeben PHP
. Hier sind die Optionen, die ich bisher gefunden habe:
Verwenden der
env
Direktive, um eine Umgebungsvariable festzulegennginx
und mitgetenv()
oder$_ENV
von abzurufenPHP
. Das Problem ist, dassenv
nur immain
Kontext gearbeitet wird, während ich den Parameter imserver
Kontext setzen muss.Verwenden der
fastcgi_param
Richtlinie, wie sie dafür ausgelegt ist.
Ich habe versucht, die Werte einiger Parameter mit zu ändern fastcgi_param
, war jedoch nicht erfolgreich:
Nginx:
fastcgi_param PATH_INFO "/var/tmp";
PHP:
Ich habe alle vordefinierten Arrays überprüft, die ich finden konnte:
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>';
Der einzige zu zeigen PATH_INFO
war $_SERVER
:
var_dump($_SERVER); // ["PATH_INFO"]=> string(0) ""
Der von mir eingestellte Wert nginx
wird jedoch nicht berücksichtigt.
Frage 1: Muss ich irgendetwas auf nginx/php
Ebene konfigurieren, damit die fastcgi_param
Richtlinie wirksam wird?
F2: Ist die fastcgi_param
Direktive auf eine vordefinierte Liste von Parametern beschränkt (z. B. kann PATH_INFO
ich eigene , aber keine benutzerdefinierten Variablen festlegen , z. B. FOO
)?
F3: Wenn ja zu Q2: Gibt es eine Möglichkeit, benutzerdefinierte Parameter von Nginx an PHP zu übergeben?
fastcgi.conf
undfastcgi_params
aber nichtfastcgi-php.conf
: Woher hast du es? Haben Sie etwas dagegen, es über Pastebin zu teilen?fastcgi_pass 127.0.0.1:1028;
fastcgi_index index.php;
include conf/fastcgi.conf;
und conf / fastcgi.conf enthält den Rest der für fastcgi erforderlichen Parameter und Einstellungennginx
. Andererseits habe ichnginx
in der Vergangenheit vergessen, Dinge beim Kompilierennginx
einzubeziehen, wollte aber nicht sagen, dass es nichts über einige von mir verwendete Anweisungen wusste: hier nichts, keine Beschwerden, aber dasfastcgi_param
funktioniert noch nicht: (Ich werde versuchen, das Originalpaketubuntu nginx
und sehen, wie es geht.ubuntu nginx
...Sie können die Anforderung ändern, indem Sie Ihre benutzerdefinierten Variablen im Anforderungsheader übergeben. Beispiel:
Und dann können Sie diese Werte aus dem Anforderungsheader in Ihrem PHP-Skript lesen.
quelle