linux Reinitialize sistem çapında ortam değişkeni

3 Cevap php

Ben sadece ben php fonksiyonunu getenv kullanarak alabilirsiniz ki benim apache benim önceden tanımlanmış ortamında bazı kayıt istiyorum. I bu nasıl yapabilirim? Ben kök kullanarak ihracat FAN = / bar / baz / etc / profile.d / foo.sh ekleyerek denedim ve apache yeniden başlatılır.

3 Cevap

Çevre değişkenleri Unix işlemler tarafından devralınan. Eğer Sadece orada değerinin değiştirilmesi ve ardından bir süreç ortamı güncellemek olmaz başlatmadan oturum zaman / etc / profile.d içinde dosyaları sadece (bir kabuktaki, mevcut kabuk) yürütülür.

Olası Düzeltmeler:

  • oturumunuzu / oturum, daha sonra apache başlatın
  • Dosyayı kaynak: # . /etc/profile.d/foo.sh, ve sonra apache yeniden
  • apache init komut dosyasını kaynak

Ayrıca emin Apache yerine kendinizi daha init açtığı zaman /etc/profile.d/ kaynaklı olduğundan emin olmanız gerekir.

Onlar yapılandırması için farklı planları kullanmak çünkü iyi düzeltme ayrıca, kullandığınız dağılımına bağlı olabilir.

Siz config dosyaları (/ etc / httpd / conf.d / *. Conf. Htaccess ...) içinde SetEnv kullanabilirsiniz. Ayrıca sen (RPM tabanlı Distribs on) sysconfig / httpd / etc / onları tanımlamak mümkün olacak ve export onları (not: test değil) gerekmektedir.

Not: Bazı dağıtımlar, Apache gibi bir kamuya erişilebilir hizmet, kadar sistem yapılandırma ile ilgili olarak, mümkün olduğunca gizlemek için oldukça uğraştım eğer bana sürpriz olmaz. Onlar yoksa, onlar gelecek sürümünde yapıyor başlayabilir. Dolayısıyla ben açıkça bunu tavsiye ederiz. Apache ve kabukları arasında böyle bir ayarını paylaşmak gerekirse, /etc/profile.d/yourprofile.sh /etc/sysconfig/httpd adlı kaynak deneyebilirsiniz

Apache yapılandırma dosyaları bir site başına temelinde ortam değişkenlerini ayarlamak için izin verir.

Web sunucusu, iki mantıksal sitelerden sayfa hizmet veren Yani eğer aynı ortam değişkeni her site için farklı ayarlanmış olması ve böylece PHP farklı tepki alabilirsiniz.

Ayrıntılar için Apache mod_env Bkz: