इसका कारण यह है:
आपको getenv()[PHP]
. से मिलने वाले पर्यावरण मान (php फ़ंक्शन) आपके द्वारा क्वेरी किए गए परिवेश से भिन्न हैं getenv()[C]
(सी lib समारोह)। क्या getenv()[PHP]
करता है, मैच के लिए पंजीकृत सैपी के साथ जाँच कर रहा है (http ://lxr.php.net/xref/PHP_5_6/ext/standard/basic_functions.c#3999
)
apache2 sapi अपने स्वयं के पर्यावरण संदर्भ के माध्यम से ऐसा करता है (http://lxr.php.net/xref/PHP_5_6/sapi/apache2handler/sapi_apache2.c#253 ), अपाचे प्रक्रिया से ही मानक OS वातावरण नहीं।
केवल जब कोई मिलान नहीं मिलता है, तो यह वास्तविक प्रक्रिया के वातावरण की जाँच करेगा। इसलिए getenv()[PHP]
एक मान देता है, लेकिन getenv()[C]
नहीं।
अब, "हैक" भी आसान है:putenv()[PHP]
, दी गई कुंजी/मान को चल रही प्रक्रिया के वातावरण में संग्रहीत करता है, यही वजह है कि इसे बाद में getenv()[c]
द्वारा खोजा जा सकता है ।