sistema reinicializar largura variável de ambiente no linux
-
02-07-2019 - |
Pergunta
Eu só quero o meu apache de registrar um pouco do meu ambiente predefinido para que eu possa recuperá-lo usando a função getenv em php. Como posso fazer isso? Eu tentei adicionar /etc/profile.d/foo.sh com FOO exportação = / bar / baz usando raiz e Apache reiniciado.
Solução
Ambiente são herdadas por processos no Unix. Os arquivos em /etc/profile.d só são executados (no shell atual, não em um subshell) quando você faz login. Apenas alterando o valor lá e, em seguida, reiniciar um processo não irá atualizar o meio ambiente.
Correções possíveis:
- logout / login, em seguida, iniciar o Apache
- Fonte do arquivo:
# . /etc/profile.d/foo.sh
, em seguida, reiniciar o apache - fonte do arquivo no script apache init
Você também precisa ter certeza de que /etc/profile.d/
é originado quando Apache é iniciado por init
ao invés de si mesmo.
A melhor correção também pode depender da distribuição você está usando, porque eles usam diferentes esquemas para configuração.
Outras dicas
Você pode usar SetEnv em seus arquivos de configuração ( /etc/httpd/conf.d/*.conf, .htaccess ...). Além disso, você deve ser capaz de defini-los em / etc / sysconfig / httpd (em distribs baseadas em RPM) e exportação -los. (Nota: não testado)
Nota: não me surpreenderia se algumas distribuições tentou muito difícil de esconder, tanto quanto possível, tanto quanto de configuração do sistema está em causa, de um serviço de acesso público, como o Apache. E se não o fizerem, eles podem começar a fazer isso em uma versão futura. Por isso eu aconselho a fazer isso explicitamente. Se você precisa compartilhar tal configuração um entre Apache e suas conchas, você pode tentar o abastecimento /etc/profile.d/yourprofile.sh de / etc / sysconfig / httpd
arquivos de configuração do Apache permitem variáveis ??de ambiente definidas em uma base por site.
Então, se o seu servidor web está servindo páginas de dois locais lógicas você pode ter o mesmo conjunto variável de ambiente de forma diferente para cada site e, assim, obter o seu PHP para reagir de forma diferente.
Veja a Apache mod_env para mais detalhes:
Se precisar de env vars para Apache somente, o que funcionou para mim foi a edição do /etc/apache2/envvars
e reinicialização do Apache. Eu adicionei essas configurações:
export LANG='en_US.UTF-8'
export LC_ALL='en_US.UTF-8'