我目前正在編寫一個CGI腳本,其最終目標是運行一個java程序,然後重定向到不同的頁面。但是,當我嘗試運行java程序時,CGI會導致500內部服務器錯誤。我嘗試過os.system(「[command]」)和call([「command」])和subprocess.Popen(「command」),所有這三個問題都會導致同樣的問題出現。任何建議,非常感謝。內部服務器錯誤 - Python CGI
編輯此外,Apache日誌給我旁邊沒有信息說只有一個無效的頭。
編輯
#!/usr/bin/python
# Import the CGI module
import cgi
import random
import os
import sys
import re
import subprocess
# Required header that tells the browser how to render the HTML.
print "Content-Type: text/html\n\n"
form = cgi.FieldStorage()
userID = random.random()
print "<html>"
print "<title>Results</title>"
print "<body>"
command = "java [classname] "
user_id = random.randint(0, sys.maxint)
command += str(user_id) + " "
command += re.sub(r'\s', '', form['key0'].value) + " "
command += form['key1'].value + " "
command += form['key2'].value + " "
command += form['key3'].value + " " if form.has_key('key3') else "0 "
## This is where the problem exists
#os.system("ls -l")
#call(["ls", "-l"])
#p = subprocess.Popen(command)
## End of Problem
print command
print "<br>"
print "Redirecting..."
print "<meta http-equiv='refresh' content='0;url=",
print "http://192.168.1.41/Path/",
print user_id,
print ".html' />"
print "</body>"
print "</html>"
整個命令是不存在的,但我相信這是正確建立,因爲我可以複製打印命令並在終端上運行它,它運行完美。該命令只是簡單的java [classname] [9 args]
java代碼可以在Python代碼之外流暢運行,它所做的只是生成一個.png文件和一個包含.png的.html文件。該文件的名稱是[user_id] .html,因此是重定向。
內部服務器錯誤確實不是如果只有進程命令被註釋掉,則會發生。
編輯最終放棄並轉移到php來執行此腳本。感謝所有的幫助!
你可以發佈你的代碼嗎?看起來像你的代碼有錯誤,或者你的代碼不會首先生成http頭文件。 – YOU 2011-03-28 08:37:00
只有一些。我會盡我所能。 – mrK 2011-03-28 08:42:53