Należy pamiętać, że dostępność $_ENV
zmiennych zależy od ustawienia variables_order
w php.ini używanego przez PHP- fpm. Wartość domyślna to EGPCS
, gdzie E
jest środowiskiem, jednak w systemie Ubuntu 12.04 stwierdziłem, że jest to GPCS
. Sam php.ini niesie ostrzeżenie dotyczące $_ENV
:
; This directive determines which super global arrays are registered when PHP
; starts up. G,P,C,E & S are abbreviations for the following respective super
; globals: GET, POST, COOKIE, ENV and SERVER. There is a performance penalty
; paid for the registration of these arrays and because ENV is not as commonly
; used as the others, ENV is not recommended on productions servers.
zaleca korzystania getenv()
który jest zawsze dostępny. Odkryłem, że zmienne, które ustawiłem w puli FPM, mogą zostać pobrane w ten sposób.
Witam, dziękuję za odpowiedź. Okej, co pozwala mi wstrzyknąć do $ _SERVER ['SOMEENV'], ale jak mogę zapewnić coś dla $ _ENV ['SOMEENV']? – Josh
Wpisy tablicy _SERVER są tworzone przez serwer WWW, ale zmienne $ _ENV są importowane ze środowiska, w którym działa interpreter PHP, a wiele z nich jest dostarczanych przez powłokę, pod którą działa PHP. W przypadku Apache, interpreter php jest wbudowany w proces Apache, ale tak nie jest w przypadku Nginx. IOW, Możliwe jest ustawienie zmiennych $ _ENV za pomocą Nginx i $ _SERVER jest tak dobre, jak to tylko możliwe. – Dayo
Czy w NGINX nie ma dyrektywy 'env'? – CMCDragonkai