¿Por qué la variable de entorno establecida por SetEnv en apache httpd.conf no se puede pasar a php?

¿Por qué la variable de entorno establecida por SetEnv en apache httpd.conf no se puede pasar a php?

Configuré una variable de entorno en httpd.conf:

SetEnv http_proxy "http://localhost:3128"

Pero no puedo obtener esta variable en php usando getenv:

<?php
echo getenv("http_proxy");
phpinfo();
print_r($_ENV);

getenvdevuelve vacío y print_r($_ENV)muestra el siguiente contenido:

Array ( [LANG] => C [PATH] => /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin [NOTIFY_SOCKET] => /run/systemd/notify ) 

Curiosamente, la variable de entorno se muestra en la sección "Entorno Apache" del phpinforesultado.

(mi sistema es apache 2.4/php 5.6/CentOS7)

Respuesta1

PHP5.6 ha abejasin apoyo por 3 añosahora. Actualizar a unversión actual¡ahora! Luego, cambie lo siguiente:

Uso SetEnv HTTP_PROXY "http://localhost:3128": las variables de entorno distinguen entre mayúsculas y minúsculas.

Se utiliza getenv(varname: "HTTP_PROXY", local_only: true)para solicitar una variable del entorno del servidor.

Si no especifica explícitamente recibir solo variables locales, en su lugar obtendrá resultados de fastcgi, por lo que para un nombre de variable que comience con HTTP_ese podríaconfundir peligrosamente el código insegurocon encabezados y esdescartado silenciosamente. Optar por no participar en el comportamiento SAPI esdocumentado en la descripción de la función getenv():

Si PHP se ejecuta en un SAPI como Fast CGI, esta función siempre devolverá el valor de una variable de entorno establecida por SAPI, incluso si se ha utilizado putenv() para configurar una variable de entorno local con el mismo nombre. Utilice el parámetro local_only para devolver el valor de las variables de entorno establecidas localmente.

información relacionada