Domanda

Voglio solo che il mio apache registri un po 'del mio ambiente predefinito in modo da poterlo recuperare usando la funzione getenv in php. Come posso fare questo? Ho provato ad aggiungere /etc/profile.d/foo.sh con export FOO = / bar / baz usando root e ho riavviato apache.

È stato utile?

Soluzione

Le variabili d'ambiente sono ereditate dai processi in Unix. I file in /etc/profile.d vengono eseguiti (nella shell corrente, non in una sottoshell) solo al momento del login. La semplice modifica del valore e il riavvio di un processo non aggiorneranno l'ambiente.

Possibili correzioni:

  • disconnetti / accedi, quindi avvia apache
  • sorgente del file: #. /etc/profile.d/foo.sh , quindi riavvia apache
  • sorgente del file nello script di apache init

Devi anche assicurarti che /etc/profile.d/ provenga quando Apache viene avviato da init piuttosto che da te stesso.

La migliore soluzione potrebbe anche dipendere dalla distribuzione che stai usando, perché usano schemi diversi per la configurazione.

Altri suggerimenti

Puoi utilizzare SetEnv nei tuoi file di configurazione ( /etc/httpd/conf.d/*.conf, .htaccess ...). Inoltre dovresti essere in grado di definirli in / etc / sysconfig / httpd (sui distributori basati su RPM) e esportarli (nota: non testato).

Nota: non mi sorprenderebbe se alcune distribuzioni si sforzassero di nascondere il più possibile, per quanto riguarda la configurazione del sistema, da un servizio accessibile pubblicamente come Apache. E se non lo fanno, potrebbero iniziare a farlo in una versione futura. Quindi ti consiglio di farlo esplicitamente. Se hai bisogno di condividere tale impostazione tra Apache e le tue shell, potresti provare a trovare /etc/profile.d/yourprofile.sh da / etc / sysconfig / httpd

I file di configurazione di Apache consentono di impostare le variabili di ambiente in base al sito.

Quindi se il tuo server web sta servendo pagine da due siti logici puoi avere la stessa variabile d'ambiente impostata in modo diverso per ogni sito e quindi far reagire diversamente il tuo PHP.

Vedi Apache mod_env per dettagli:

Se hai bisogno di env vars solo per Apache, ciò che ha funzionato per me è stato modificare / etc / apache2 / envvars e riavviare Apache. Ho aggiunto queste impostazioni:

export LANG='en_US.UTF-8'
export LC_ALL='en_US.UTF-8'
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top