Einstellung von $ _ENV (fka $ HTTP_ENV_VARS) mit nginx / php-fpm

8

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?

    
Josh 18.12.2011, 12:08
quelle

3 Antworten

17

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%     
kolbyjack 18.12.2011 13:30
quelle
6

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 :

%Vor%

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.

    
shrikeh 19.06.2013 15:06
quelle
0

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?

    
user2959619 27.07.2015 02:06
quelle