2008-12-10 11 views
8

मुझे ~/perl में मेरी होस्टिंग मशीन पर कई पर्ल मॉड्यूल स्थापित किए गए हैं, मैं उन्हें पर्ल मॉड्यूल पथ में कैसे जोड़ूं? PERL5LIB या unshift को @INC पर पथ निर्धारित करने के लिए निश्चित रूप से कार्य करता है, लेकिन सीजीआई स्क्रिप्ट के रूप में चलते समय पर्यावरण चर मदद नहीं करता है और @INC रास्ता बहुत पोर्टेबल नहीं है। क्या कोई बेहतर तरीका है? यह एक आम समस्या होनी चाहिए, क्या मुझे कुछ याद आ रहा है?मैं CGI स्क्रिप्ट के लिए मॉड्यूल के लिए पर्ल के समावेशन पथ को कैसे सेट कर सकता हूं?

उत्तर

6

PERL5LIB CGI स्क्रिप्ट के लिए ठीक काम करता है। आपको केवल वैरिएबल को सही जगह पर सेट करना होगा, जैसे सर्वर कॉन्फ़िगरेशन। आप किस वेबसर्वर का उपयोग कर रहे हैं? अपाचे के लिए, मैं mod_env से SetEnv निर्देश का उपयोग करता हूं।

@INC पोर्टेबल है। आपके द्वारा डाले गए पथ प्रत्येक मशीन पर समान नहीं हो सकते हैं, लेकिन आपको चर के साथ समस्या नहीं होनी चाहिए।

आप perlfaq8 में पूछे जाने वाले प्रश्न प्रविष्टियों पढ़ा है:

+0

धन्यवाद, मुझे SetEnv निर्देश के बारे में पता नहीं था। यही वह चीज है जिसे मैं ढूंढ रहा था। – zoul

+0

यह सभी सर्वर सेटअप पर काम नहीं करता है - कुछ SetEnv को अक्षम करते हैं, और जो मैं पढ़ रहा हूं, उससे अन्य केवल इसे पर्यावरण चर सेट करने की अनुमति देते हैं जो HTTP_ से शुरू होता है। मुझे लगता है कि किसी तरह का सुरक्षा उपाय। – user1618143

9

यह imo करने के लिए एक क्लीनर तरीका है:

use lib "/path/" ; 

वहाँ यह करने के लिए अन्य रोचक और अच्छी तरीके यहां पाया जा सकता है कि कर रहे हैं:

http://www.slideshare.net/pfig/cpan-training-presentation/

इसके अलावा, पुन: सीजीआई स्क्रिप्ट्स, आप अपने CGI Env के लिए PERL5LIB पथ परिभाषित कर सकते हैं, यह केवल आपके वेबहोस्ट पर निर्भर करता है।

कुछ वेबहोस्ट सीजीआई पर्यावरण के लिए एनवी चर के विशिष्ट नियंत्रण की अनुमति देते हैं, और आपको बस उन्हें सेट करना होगा, अन्य लोगों के पास "परमिट" सूची हो सकती है जो प्रारंभिक समय पर दिखाई देने वाले चर को स्थानीय दायरे में दिखाई देता है।

आपके विशिष्ट HTTP सर्वर पर ऐसा करने के तरीके को पढ़ने में मदद कर सकता है।

वहाँ, एक और विकल्प है यदि ENV की स्थापना अपने स्वाद के लिए नहीं है: local::lib

कौन सा कुछ पूर्वनिर्धारित पथ स्वचालित रूप से खोज करता है।

+1

+1 बस ध्यान दें कि PERL5LIB नजरअंदाज कर दिया है आप कलंक मोड पर ... http बंद होना चाहिए: //perldoc.perl.org/perlsec.html#Taint-mode-and-%40INC – draegtun

संबंधित मुद्दे

 संबंधित मुद्दे