2008-09-22 8 views
5

में सिस्टम वाइड पर्यावरण परिवर्तक को पुन: प्रारंभ करें, मैं बस अपने अपाचे को अपने कुछ पूर्वनिर्धारित वातावरण को पंजीकृत करना चाहता हूं ताकि मैं php में getenv फ़ंक्शन का उपयोग करके इसे पुनर्प्राप्त कर सकूं। मैं यह कैसे कर सकता हूँ? मैंने रूट के साथ /etc/profile.d/foo.sh को जोड़ने का प्रयास किया है, जो रूट =/बार/बाज़ रूट का उपयोग करके और अपाचे को पुनरारंभ किया गया है।लिनक्स

+0

क्या वितरण? यह करने के सर्वोत्तम अभ्यास के तरीके पर यह प्रभाव डालता है। – freespace

उत्तर

6

पर्यावरण चर को यूनिक्स में प्रक्रियाओं द्वारा विरासत में मिलाया जाता है। जब आप लॉग इन करते हैं तो /etc/profile.d में फ़ाइलों को केवल निष्पादित किया जाता है (वर्तमान खोल में, सबशेल में नहीं)। बस वहां मान बदलना और फिर प्रक्रिया को पुनरारंभ करना पर्यावरण को अपडेट नहीं करेगा।

संभावित समाधान:

  • लॉग बाहर/में प्रवेश करें, तो अपाचे
  • स्रोत फ़ाइल शुरू: # . /etc/profile.d/foo.sh, तो अपाचे
  • स्रोत अपाचे init स्क्रिप्ट में फ़ाइल को पुनः आरंभ

आपको यह सुनिश्चित करने की भी आवश्यकता है कि /etc/profile.d/ को अपरिवर्तित किया जाता है जब अपाचे को आपके बजाय init द्वारा शुरू किया जाता है।

सबसे अच्छा फ़िक्स आपके द्वारा उपयोग किए जा रहे वितरण पर भी निर्भर हो सकता है, क्योंकि वे कॉन्फ़िगरेशन के लिए विभिन्न योजनाओं का उपयोग करते हैं।

+0

अच्छा। ध्यान रखें कि अपाचे की init स्क्रिप्ट उन्नयन पर बदल सकती है। –

0

आप अपनी कॉन्फ़िगरेशन फ़ाइलों (/etc/httpd/conf.d/*.conf, .htaccess ...) में SetEnv का उपयोग कर सकते हैं। इसके अतिरिक्त आप उन्हें/etc/sysconfig/httpd (RPM- आधारित distribs पर) और निर्यात निर्यात (नोट: परीक्षण नहीं किया गया) में परिभाषित करने में सक्षम होना चाहिए।

नोट: यह मुझे आश्चर्य नहीं करेगा अगर कुछ वितरणों ने जितना संभव हो उतना छिपाने की कोशिश की, जहां तक ​​सिस्टम कॉन्फ़िगरेशन का संबंध है, अपाचे जैसे सार्वजनिक रूप से सुलभ सेवा से। और यदि वे नहीं करते हैं, तो वे भविष्य के संस्करण में ऐसा करना शुरू कर सकते हैं। इसलिए मैं आपको स्पष्ट रूप से ऐसा करने की सलाह देता हूं। आप अपाचे और अपने गोले के बीच इस तरह के एक सेटिंग साझा करने के लिए की जरूरत है, तो आप से /etc/sysconfig/httpd

0

अपाचे config फ़ाइलों को आप निर्धारित करने की अनुमति /etc/profile.d/yourprofile.sh सोर्सिंग की कोशिश कर सकते प्रति साइट के आधार पर पर्यावरण चर।

तो यदि आपका वेब सर्वर दो लॉजिकल साइटों से पृष्ठों की सेवा कर रहा है, तो आप प्रत्येक साइट के लिए अलग वातावरण चर सेट कर सकते हैं और इस प्रकार आपके PHP को अलग-अलग प्रतिक्रिया प्राप्त कर सकते हैं।

जानकारी के लिए Apache mod_env देखें:

0

आप की जरूरत है env अपाचे केवल, क्या मुझे /etc/apache2/envvars और अपाचे को फिर से प्रारंभ संपादन किया गया था के लिए काम किया के लिए वार्स। मैंने इन सेटिंग्स को जोड़ा:

export LANG='en_US.UTF-8' 
export LC_ALL='en_US.UTF-8'