Was ist das Äquivalent von setenv in einer Apache-Umgebung? Mit Apache kann ich zum Beispiel das env "SOMEENV" setzen und in php über $ _ENV ['SOMEENV'] zugreifen - aber ich habe keine Ahnung, wie man das mit nginx + php-fpm macht.
Ich dachte zuerst, dass ich nur ENV [SOMENEV] = test in der Konfiguration meines php-fpm Pools setzen muss, aber var_dump ($ _ ENV) gibt immernoch nichts zurück.
Irgendwelche Hinweise?
nginx hat keine Möglichkeit, die Umgebung von php zu beeinflussen, da es den PHP-Interpreter nicht in seinen Prozess einbindet. Es übergibt Parameter an PHP durch fastcgi_param Anweisungen. Sie können nur einen hinzufügen, wo Sie den Rest Ihrer Parameter einstellen und über $ _SERVER:
darauf zugreifen %Vor% Beachten Sie, dass die Verfügbarkeit von $_ENV
Variablen von der Einstellung von variables_order
in der von php-fpm verwendeten php.ini abhängt. Der Standardwert ist EGPCS
, wobei E
die Umgebung ist. Unter Ubuntu 12.04 habe ich jedoch GPCS
gefunden. Die php.ini selbst enthält eine Warnung bezüglich $_ENV
:
Es wird empfohlen, getenv()
zu verwenden, das immer verfügbar ist. Ich habe festgestellt, dass Variablen, die ich im FPM-Pool eingestellt habe, auf diese Weise abgerufen werden können.
Ich setze alle env [...] = Variablen in php-fpm.d / www.conf Nachdem ich ein Wochenende probiert hatte, fand ich den einzigen Weg, um auf diese Variablen zuzugreifen, $ _SERVER, und $ _ENV konnte nicht auf diese Variablen zugreifen. Kann jemand eine Idee geben?
Tags und Links php nginx environment-variables