
Eu configurei uma variável de ambiente em httpd.conf:
SetEnv http_proxy "http://localhost:3128"
Mas não consigo obter essa variável no php usando getenv
:
<?php
echo getenv("http_proxy");
phpinfo();
print_r($_ENV);
getenv
retorna vazio e print_r($_ENV)
mostra o seguinte conteúdo:
Array ( [LANG] => C [PATH] => /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin [NOTIFY_SOCKET] => /run/systemd/notify )
Curiosamente, a variável de ambiente é mostrada na seção “Ambiente Apache” da phpinfo
saída.
(meu sistema é apache 2.4/php 5.6/CentOS7)
Responder1
PHP5.6 tem abelhasem suporte por 3 anosagora. Atualize para umVersão Atualagora! Em seguida, altere o seguinte:
Uso SetEnv HTTP_PROXY "http://localhost:3128"
- variáveis de ambiente diferenciam maiúsculas de minúsculas.
Use getenv(varname: "HTTP_PROXY", local_only: true)
para solicitar uma variável do ambiente do servidor.
Se você não especificar explicitamente para receber apenas variáveis locais, você obterá resultados do fastcgi, portanto, para um nome de var começando com HTTP_
isso, você poderáconfundir perigosamente código insegurocom cabeçalhos e ésilenciosamente descartado. A desativação do comportamento SAPI édocumentado na descrição da função getenv():
Se o PHP estiver rodando em um SAPI como Fast CGI, esta função sempre retornará o valor de uma variável de ambiente definida pelo SAPI, mesmo que putenv() tenha sido usado para definir uma variável de ambiente local com o mesmo nome. Use o parâmetro local_only para retornar o valor das variáveis de ambiente definidas localmente.