2011-02-22 10 views
5

में एक .cgi फ़ाइल निष्पादित मैं उबंटूउबंटू

तहत अपाचे/पीएचपी चला रहा हूँ जब मैं .cgi फ़ाइल को चलाने, http://localhost/mycgi.cgi पर जाकर, ब्राउज़र इसे चलाने के बजाय कोड को प्रदर्शित करेगा।

मैं ब्राउज़र को अपनी सामग्री दिखाने के बजाय CGI फ़ाइल निष्पादित कैसे करूं?

+2

http://askubuntu.com/ – daxim

+2

@daxim पर माइग्रेट करने के लिए मतदान: मुझे नहीं लगता कि यह वास्तव में एक उबंटू विशिष्ट समस्या है। सवाल यहां सही स्थित है। – eckes

उत्तर

2

जाहिर है, CGI निष्पादन ठीक से स्थापित नहीं है। क्या आपने tutorial को आजमाया है?

आमतौर पर, सभी CGI स्क्रिप्ट को एक निश्चित स्थान जैसे cgi-bin पर रखा जाता है। केवल उस फ़ोल्डर में मौजूद फाइलें निष्पादित की जाती हैं। अन्यथा, उन्हें सामान्य फाइल के रूप में माना जाता है और वेब सर्वर उन्हें स्रोत के रूप में वापस कर देता है।

tutorial आपको उन विकल्पों को दिखाता है जिनका उपयोग आप टेक्स्ट फ़ाइलों के रूप में वापस लौटने के बजाय स्क्रिप्ट को निष्पादित करने के लिए कर सकते हैं।

+0

मैंने यूएसआर/www/mywww/cgi-bin में एक सीजीआई-बिन बनाया है, इसका मतलब क्या है? यदि मुझे और कहां नहीं रखा जाना चाहिए? – X10nD

+0

@ जीन: बस 'सीजीआई-बिन' निर्देशिका बनाना ** ** ** पर्याप्त नहीं है। अपने आप को एक पक्ष करो और ट्यूटोरियल पढ़ें। वे चीजों को बहुत अच्छी तरह से समझाते हैं। – eckes

+1

कि ट्यूटोरियल डंग इमो है। जैसे "ScriptAlias ​​निर्देश इस तरह दिखता है: ScriptAlias ​​/ cgi-bin// usr/local/apache2/cgi-bin/दिखाया गया उदाहरण आपकी डिफ़ॉल्ट httpd.conf कॉन्फ़िगरेशन फ़ाइल से है, यदि आपने डिफ़ॉल्ट स्थान में अपाचे स्थापित किया है" यह wasn " मेरे लिए सच नहीं – Literat

1

सुनिश्चित करें कि आपकी .cgi या .pl फ़ाइल में शेबैंग लाइन सही है। शेबांग लाइन अपाचे को बताती है जहां पर्ल दुभाषिया है (पर्ल दुभाषिया perl.exe फ़ाइल है)।

अपाचे ट्यूटोरियल का कहना है:

आपका पहला CGI कार्यक्रम निम्नलिखित एक उदाहरण सीजीआई प्रोग्राम है जो आपके ब्राउज़र के लिए एक पंक्ति प्रिंट है। निम्न में टाइप करें, इसे first.pl नामक फ़ाइल में सहेजें, और इसे अपनी cgi-bin निर्देशिका में रखें। #!/usr/bin/perl प्रिंट करें "सामग्री-प्रकार: टेक्स्ट/एचटीएमएल \ n \ n"; प्रिंट "हैलो, वर्ल्ड।";

तो यहाँ कुटिया लाइन #!/usr/bin/perl

हालांकि, अगर perl.exe एक अलग फ़ोल्डर में स्थित है तो #!/usr/bin/perl जरूरतों को बदलने की है,! विंडोज़ उपयोगकर्ताओं के लिए भी यह सच है, जो सामान्य रूप से पूरी तरह से अनदेखा कर सकते हैं और शेबांग लाइन को छोड़ सकते हैं। (ट्यूटोरियल इस तथ्य का जिक्र क्यों नहीं करता है, मुझे नहीं पता - मुझे लगता है कि उन्हें एहसास नहीं हुआ कि कुछ लोग हमेशा शेबांग लाइन को अनदेखा करते हैं?)

उदाहरण के लिए, जब मैंने पर्ल स्थापित किया तो यह स्वचालित रूप से सुझाव दिया गया था कि मैं अपने Perl64 फ़ोल्डर के अंदर C:\Program Files (x86)\Perl64 में पर्ल स्थापित 'बिन' नामक फ़ोल्डर है और वह अंदर perl.exe है

तो मैं करने के लिए कुटिया लाइन बदलना पड़ा: इससे पहले कि मैं CGI स्क्रिप्ट अपाचे के साथ काम करने के लिए मिल सकता है #!C:/Program Files (x86)/Perl64/bin/perl.exe

13

अपने apache2.conf फ़ाइल

<Directory /usr/local/apache2/htdocs/somedir> 
    Options +ExecCGI 
</Directory> 

AddHandler cgi-script .cgi .pl 
+0

+1 छोटा और सरल। वर्चुअल होस्ट पर उपयोग करते समय, आपको टैग के अंदर टैग में यह विकल्प निर्दिष्ट करने की आवश्यकता है, "विकल्प + ExecCGI" का पर कोई प्रभाव नहीं पड़ता है। –

0

ये पंक्तियां जोड़ें इस अमेज़न Ubuntu 14.04 पर मुझे ढकोसला किया।

sudo a2enmod cgi 
sudo service apache2 restart 

यह एक .cgi विस्तार के साथ कुछ मौजूदा पर्ल स्क्रिप्ट और मौजूदा आभासी मेजबान विन्यास के लिए हल: मैं एक विन्यास था कि कुछ वर्षों के लिए 'काम' किया था।इसके अलावा गलत [इस समस्या नहीं है, लेकिन इस उन्नयन के साथ जुड़े]:

virtual.host 

virtual.host.conf 

बनने के लिए जरूरत से पहले यह वैध के रूप में मान्यता दी गई थी।