भले ही php में PGPASSFILE
हो वातावरण में यह अपाचे से विरासत में मिला है, जैसा कि getenv("PGPASSFILE")
द्वारा सिद्ध किया गया है , ऐसा प्रतीत होता है कि यह वातावरण वह नहीं है जो साझा libpq
. के लिए उपलब्ध है पुस्तकालय जो अंततः .pgpass
. को संभालता है . यही कारण है कि इस सेटिंग पर ध्यान नहीं दिया जाता है।
डेटाबेस से कनेक्ट करने से पहले PHP में पहले से मौजूद वेरिएबल को पर्यावरण में दर्ज करना एक वैकल्पिक हल है:
if (getenv("PGPASSFILE")!="")
putenv("PGPASSFILE=".getenv("PGPASSFILE"));
स्पष्ट putenv
वेरिएबल को इस तरह से पुश करेगा जो इसे libpq
. के लिए उपलब्ध कराता है getenv()
. की कॉल . यह अजीब है क्योंकि आम तौर पर एक प्रक्रिया में केवल एक ही वातावरण होता है, लेकिन यह काम करता प्रतीत होता है।
मैंने एक अलग प्रश्न में एक्सटेंशन और PHP के कोर के बीच असंगत पर्यावरण समस्या के बारे में पूछा है:putenv() की आवश्यकता क्यों है पहले से परिभाषित पर्यावरण चर पर?