Saltar al contenido

Cómo hacer que PHP pueda leer las variables de entorno del sistema

Solución:

Probado en Centos 7 con el servicio Systemd y PHP 5.6.4

ABIERTO

/etc/php.ini

ENCONTRAR

variables_order = "GPCS"

REEMPLAZAR A

variables_order = "EGPCS"
# http://php.net/manual/en/ini.core.php#ini.variables-order

ABIERTO

/etc/php-fpm.d/www.conf (maybe /etc/php5/fpm/pool.d/www.conf)
(do not confuse with /etc/php-fpm.conf)

ENCONTRAR SI EXISTE

clear_env = yes

SUSTITUIR O AÑADIR

clear_env = no
# http://php.net/manual/en/install.fpm.configuration.php

ABIERTO

/etc/environment

AGREGAR

#any variables you need, for example:
MY_VAR=1234

EJECUTAR EN SHELL PARA COMPROBAR

source /etc/environment
echo $MY_VAR # 1234

CORRER CON CONCHA

ln -fs /etc/environment /etc/sysconfig/php-fpm
systemctl daemon-reload && service php-fpm restart

…PRUEBAS

ABIERTO

index.php # in your project folder, running with php-fpm

AGREGAR

var_dump(getenv('MY_VAR'), $_ENV['MY_VAR']);exit;

EJECUTAR EN NAVEGADOR

http://mylink.to.project/index.php   
string(4) "1234"
string(4) "1234"

¡DISFRUTAR!

Razones de seguridad 🙂

Ver /etc/php5/fpm/pool.d/www.conf (ubicación de Debian, puede ser diferente en CentOs)

; Clear environment in FPM workers
; Prevents arbitrary environment variables from reaching FPM worker processes
; by clearing the environment in workers before env vars specified in this
; pool configuration are added.
; Setting to "no" will make all environment variables available to PHP code
; via getenv(), $_ENV and $_SERVER.
; Default Value: yes
;clear_env = no 

; Pass environment variables like LD_LIBRARY_PATH. All $VARIABLEs are taken from
; the current environment.
; Default Value: clean env
;env[HOSTNAME] = $HOSTNAME
;env[PATH] = /usr/local/bin:/usr/bin:/bin
;env[TMP] = /tmp
;env[TMPDIR] = /tmp
;env[TEMP] = /tmp

Las variables de entorno en una configuración FastCGI se establecen como entrada por el cliente del proceso FPM, por ejemplo, NginX. Se envían como encabezados al servidor FastCGI, que los interpreta y los configura en consecuencia para que los lea con getenv.

Si de hecho está utilizando NginX, busque las directivas fastcgi_param. También puede establecer variables de entorno en la configuración de su grupo de php5-fpm, según su caso de uso.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *