दिलचस्प पोस्ट
एएसपी.नेट 5, एनएटी कोर और एएसपी.नेट कोर 5 के बीच अंतर क्या है? किसी एप्लिकेशन से WiFi को सक्षम / अक्षम कैसे करें? फास्ट लॉग आधार 2 छत की गणना करें मैं क्यूटी में वस्तु कैसे प्रतिलिपि कर सकता हूं? मैं UIPageViewController के स्वाइप इशारे को कैसे अक्षम करूं? फायरबेज – ऐप हटाना और पुनर्स्थापना करना उपयोगकर्ता को अन-प्रमाणित नहीं करता है कंडीशनल बाइनरी डेटाटायेबल पैकेज का उपयोग करके संदर्भ में शामिल होने और अपडेट करें डीजेंगो / अजगर में ईमेल की वैधता की जांच करना क्यों क्लिक करें () के बजाय jQuery पर () का उपयोग करें डोज मोड एंड्रॉइड 6.0 में श्वेतसूची ऐप कैसे करें लिनक में पदानुक्रमित डेटा – विकल्प और प्रदर्शन कैसे दो निर्दिष्ट तारीख के बीच की तारीखों को खोजने के लिए? जावा में, बूलियन "आपरेशन के क्रम" क्या हैं? डब्ल्यूडब्ल्यूडब्ल्यू का उपयोग: डिस्क पर फ़ाइल को स्मृति में सभी को लोड किए बिना डाउनलोड करने के लिए मैकेनिक .gitignore सभी फ़ाइलों को अनदेखा करते हैं तो फिर * .foo की अनुमति दें

मेरी $ _ENV रिक्त क्यों है?

मैं Apache/2.2.11 (Win32) PHP/5.3.0 चला रहा हूं और मैंने अपने .htaccess फ़ाइल में निम्न किया है:

 SetEnv FOO bar 

अगर मैं PHP फ़ाइल में $_ENV चर को मुद्रित करता हूं, तो मुझे एक खाली सरणी मिल जाती है। मेरा पर्यावरण चर क्यों नहीं दिखाई देता है? पहली जगह में यह खाली क्यों है?

मुझे अपना वैरिएबल मिला है, लेकिन यह $_SERVER चर में दिखाई देता है और किसी कारण से यह दो बार प्रकट होता है, जैसे ऐसा क्यों है?

 [REDIRECT_FOO] => bar [FOO] => bar 

ऐसा प्रतीत होता है कि मैं getenv('FOO') का उपयोग कर इसे प्राप्त कर सकता हूं, इसलिए मुझे इसका उपयोग करना चाहिए लेकिन मैं अभी भी इस बारे में थोड़ा उत्सुक हूं कि इसके कारण क्या होता है क्या यह एक विंडोज़ मुद्दा है? या क्या हो रहा है?

Solutions Collecting From Web of "मेरी $ _ENV रिक्त क्यों है?"

मुड़ता है कि यहां दो मुद्दे हैं:

1. $_ENV केवल अगर $_ENV इसे अनुमति देता है , जो इसे डिफ़ॉल्ट रूप से नहीं लगता है, कम से कम डिफ़ॉल्ट WAMP सर्वर स्थापना में नहीं है।

 ; This directive determines which super global arrays are registered when PHP ; starts up. If the register_globals directive is enabled, it also determines ; what order variables are populated into the global space. G,P,C,E & S are ; abbreviations for the following respective super globals: GET, POST, COOKIE, ; ENV and SERVER. There is a performance penalty paid for the registration of ; these arrays and because ENV is not as commonly used as the others, ENV is ; is not recommended on productions servers. You can still get access to ; the environment variables through getenv() should you need to. ; Default Value: "EGPCS" ; Development Value: "GPCS" ; Production Value: "GPCS"; ; http://php.net/variables-order variables_order = "GPCS" 

जब मैं variables_order वापस EGPCS सेट करता EGPCS , $_ENV अब रिक्त नहीं है।

2. जब आप अपने .htaccess में SetEnv का उपयोग करते हैं, तो इसे $_SERVER में समाप्त होता है, $_ENV में नहीं , जो मुझे कहना होगा कि यह SetEnv भ्रामक है जब इसे SetEnv नाम दिया SetEnv

 # .htaccess SetEnv ENV dev SetEnv BASE /ssl/ # php var_dump($_SERVER['ENV'], $_SERVER['BASE']); // string 'dev' (length=3) // string '/ssl/' (length=5) 

3. getenv फ़ंक्शन काम किया क्योंकि यह जाहिरा तौर पर दोनों $_ENV और $_SERVER $_ENV इसके अतिरिक्त, ऐसा करने के लिए ऐसा असंवेदनशील लगता है, जो उपयोगी हो सकता है

 var_dump(getenv('os'), getenv('env')); // string 'Windows_NT' (length=10) // string 'dev' (length=3) 

$_ENV वेरिएबल्स पर्यावरण से आयात किए जाते हैं जिसके तहत PHP चल रहा है, और आपके सेटअप के आधार पर (ओएस, आपका सर्वर, चाहे अपाचे मॉड्यूल या फास्टसीजीआई के तहत PHP चलाता है आदि), यह बहुत भिन्न हो सकता है

IIRC एक मानक अपाचे + mod_php विंडोज़ में स्थापित, $_ENV में चर को बदलने का एकमात्र तरीका है विंडोज़ पर्यावरण चर को बदलने ( यह देखें)। Windows पर PHP एक्सटेंशन के साथ काम करते समय यह महत्वपूर्ण हो सकता है, क्योंकि उनमें से कुछ (जैसे: php_ldap ) केवल $_ENV पर वातावरण वार्स के माध्यम से कॉन्फ़िगर करने $_ENV

REDIRECT_* चर दिखाई देते हैं यदि आप RewriteRules का उपयोग कर रहे हैं मेरे सर्वर पर वे भी ऐसा ही दिखाई देते हैं। इसमें फास्टसीजीआई के तहत चलने के साथ कुछ हो सकता है और अगर suexec के साथ मिलाया जाता है, तो यह पूरी तरह से पर्यावरण वातावरण को साफ़ करने की संभावना है। उन्हें वापस लाने के लिए अतिरिक्त कॉन्फ़िगरेशन की आवश्यकता हो सकती है, PassEnv विशेष रूप से के रूप में क्यों getenv () तुम्हारे लिए काम करता है, मैं कोई सुराग नहीं है। लेकिन सभी घटनाएं आपके सर्वर और PHP कॉन्फ़िगरेशन के लिए विशिष्ट हैं। सर्वरफॉल्ट पर पूछें, उन्हें पता होना चाहिए