से पास नहीं किया गया है। मैं .htaccess से PHP तक एक पर्यावरण चर पारित करने का प्रयास कर रहा हूं। यह मेरे स्थानीय WAMP सर्वर पर ठीक काम करता है, लेकिन सर्वर पर जहां मेरी वेबसाइट होस्ट की जाती है, यह कारण के बिना विफल हो जाती है।पर्यावरण चर को .htaccess से PHP
यहाँ अपने परीक्षण विन्यास है:
.htaccess:
SetEnv TEST_VARIABLE test_value
test.php:
<pre>
getenv('TEST_VARIABLE') = <?php print getenv('TEST_VARIABLE'); ?>
getenv('REDIRECT_TEST_VARIABLE') = <?php print getenv('REDIRECT_TEST_VARIABLE'); ?>
</pre>
अपने स्थानीय सर्वर पर, सही ढंग से test.php हो रही रिटर्न:
getenv('TEST_VARIABLE') = test_value
getenv('REDIRECT_TEST_VARIABLE') =
लेकिन पर उत्पादन सर्वर, यह रिटर्न:
getenv('TEST_VARIABLE') =
getenv('REDIRECT_TEST_VARIABLE') =
थिंग्स आई की संभावना से इनकार किया है:
mod_env
स्थापित नहीं है/मेजबान रूप से सक्षम। ऐसा नहीं हो सकता है, क्योंकिSetEnv
पहचाना नहीं जाएगा और .htaccess को संसाधित करते समय मुझे 500 मिलेंगे।AllowOverrides
httpd.conf
में इस निर्देशिका के लिएFileInfo
शामिल नहीं है। नहीं हो सकता है, क्योंकिSetEnv
निर्देश का सामना करते समय अपाचे "SetEnv को यहां अनुमति नहीं दी गई" त्रुटि को फेंक देगा और मुझे 500 बार फिर मिल जाएगा।variables_order
php.ini में 'ई' शामिल नहीं है। यह$_ENV
सुपरग्लोबल खाली (जो यह है) समझाएगा, लेकिन क्यों नहींgetenv()
इन चर के लिए मान वापस नहीं करता है।संपूर्ण पर्यावरण खराब हो गया है। नहीं हो सकता है, क्योंकि
getenv('PATH')
औरgetenv('SERVER_NAME')
अभी भी वैध मान लौटाते हैं।
इस बिंदु पर मुझे इस बात का नुकसान हुआ है कि यह कॉन्फ़िगरेशन किस कारण हो सकता है।
SetEnv _is_ an .htaccess कमांड, लेकिन आपने इसे दबाया: एक बार जब मैंने HTTP_ के साथ चर को प्रीफ़िक्स किया, तो सबकुछ काम करता था। मैंने किसी भी "आधिकारिक" स्रोत में दस्तावेज की आवश्यकता को नहीं देखा है, जो अजीब है, लेकिन हे, अगर यह काम करता है तो इसे छूना नहीं है, है ना? – nitwit
कुछ सर्वरों पर रीव्राइटरूले के लिए एक ही आवश्यकता है। * - (ई = HTTP_VAR: VAL)। – Chris
बस एक ही समस्या में भाग गया, इतना अजीब है कि यह कहीं भी दस्तावेज नहीं है। मेरे मामले में, यह एक PHP स्क्रिप्ट के साथ नहीं हुआ, बल्कि पर्ल में। – insaner