2009-09-23 14 views
7

में आंतरिक सर्वर त्रुटि (500) मैं अपने सर्वर को कॉन्फ़िगर करने के बाद एक सरल सीजीआई स्क्रिप्ट चलाने की कोशिश कर रहा हूं।सरल सीजीआई स्क्रिप्ट

मेरे स्क्रिप्ट इस तरह दिखता है:

print "Content-type: text/html" 
print 
print "<html><head><title>CGI</title></head>" 
print "<body>" 
print "hello cgi" 
print "</body>" 
print "</html>" 

जब मैं अपने लिपियों यूआरएल http://127.0.0.1/~flybywire/cgi-bin/main.py करने के लिए जाना मैं:

आंतरिक सर्वर त्रुटि

सर्वर में आंतरिक त्रुटि या गलत कॉन्फ़िगरेशन का सामना करना पड़ा और आपका अनुरोध पूरा करने में असमर्थ था।

और error.log में मैं निम्नलिखित मिल:

[error] (8)Exec format error: exec of '/home/flybywire/www/cgi-bin/main.py' failed [error] [client 127.0.0.1] Premature end of script headers: main.py

अन्य जानकारी:Apache/2.2.8 (Ubuntu) DAV/2 SVN/1.4.6 Server at 127.0.0.1 Port 80

उत्तर

21

आप एक #!/usr/bin/python अपनी स्क्रिप्ट के शीर्ष पर आवश्यकता हो सकती है के लिए अजगर का उपयोग करने के अपाचे बताने के लिए इसे निष्पादित करो। कम से कम, मैंने ऐसा किया और यह मेरे लिए काम किया :-)।

+0

धन्यवाद के लिए यह वह जगह है पुनः आरंभ नहीं है, यह काम करता है। – flybywire

+0

मुझे लगता है कि सभी सीजीआई स्क्रिप्ट के लिए '#!/Usr/bin/python' जोड़ें डरावना है। Apache SetEnv PythonPATH द्वारा इसे कैसे सेट करें? – gonjay

0

ऐसा लगता है कि अपाचे को इसे निष्पादित करने में समस्या है। आमतौर पर एक यूनिक्स स्क्रिप्ट के लिए आपको स्क्रिप्ट के शीर्ष पर दुभाषिया निर्दिष्ट करने की भी आवश्यकता होती है।

शीर्ष करने के लिए इस जोड़ने का प्रयास करें:

#!/usr/bin/python 
9

इसके अलावा, फ़ाइल को सहेजने यूनिक्स लाइन अंत के साथ (अगर यह एक Linux सर्वर है)। आपने इसे chmod +x का उपयोग करके निष्पादन योग्य बना दिया है?

यदि आप विभिन्न परिवेशों में चल रहे हैं (इसलिए env भाग) वर्तमान चल रहे पायथन संस्करण को कवर करने के लिए आप #!/usr/bin/env python का उपयोग कर सकते हैं।

+0

जब मैंने इसे 'chmod + x' के बिना करने की कोशिश की, तो एक अलग त्रुटि हुई: '(13) अनुमति अस्वीकृत:' /home/flybywire/www/cgi-bin/main.py 'विफल' का निष्पादन। –

+1

ऐसा इसलिए है क्योंकि chmod + x फ़ाइल अनुमतियों को निष्पादन योग्य बनाता है - फ़ाइल निष्पादन योग्य बनाना वास्तव में एक शर्त है। –

1

स्क्रिप्ट के शीर्ष पर लाना

#!/usr/bin/env python 

ठीक काम करता है। मैं इसे शीर्ष पर डाल दिया है, लेकिन Netbeans अतिरिक्त कोड (आयात आदेशों) डाल दिया गया था जो मुझे पागल :(

0

हो सकता है कि आपकी समस्या है कि नई अजगर संस्करण कोष्ठक() की जरूरत चलाई पेज के शीर्ष पर अपने आप में।

तो अपने:

print "<body>" 

अब होने के लिए चाहिए:

print ("<body>") 
+0

वे Python2 का उपयोग कर Python3 नहीं कर रहे हैं। –

0

अपने कार्यक्रम (प्रिंट) मैं अपने अपाचे सर्वर पर इसे करने की कोशिश (मैक में 2 लाइन को दूर ओएस एक्स) यह ठीक काम करता है। 755 chmod करने के लिए भूल जाते हैं और sudo के साथ रिबूट apachectl अजगर 2,7

print "Content-type: text/html" 
print "<html><head><title>CGI</title></head>" 
print "<body>" 
print "hello cgi" 
print "</body>" 
print "</html>" 
संबंधित मुद्दे