在Windows上的Apache中执行Python cgi文件

时间:2016-01-27 22:10:20

标签: python apache cgi

我正在尝试用Apache运行一个非常简单的“Hello World”程序。 但是,Apache在尝试执行我的python文件时返回500内部服务器错误。 我在这里阅读了几个类似的主题并尝试了建议,没有运气。 我尝试过的事情:

  1. 将带有.py文件的AddHandler包含在.conf文件中
  2. 将ExecCGI添加到.conf。中的“选项索引”行。
  3. 确保输出的第一件事是“”Content-Type:text / html“ 2 行尾字符。
  4. 将一个shebang行添加到python文件的顶部以指向Python解释器。我不确定我是否正确地做这一部分。
  5. 重新启动Apache
  6. 我使用的工具包括:

    • Windows 7
    • Python 3.5
    • Apache 2.4

    我的代码: HTML文件(在Apache文件夹的htdocs文件夹中):

    <form action="/cgi-bin/hello_get.py" method="post">
    First Name: <input type="text" name="first_name">  <br />
    
    Last Name: <input type="text" name="last_name" />
    <input type="submit" value="Submit" />
    </form>
    

    python文件(在cgi-bin文件夹中):

    # Note that I tried this without the C:/ also
    #!C:/Users/MyName/workspace/Flask/flask/Scripts
    
    # Import modules for CGI handling
    import cgi, cgitb
    
    # Create instance of FieldStorage
    form = cgi.FieldStorage()
    
    # Get data from fields
    first_name = form.getvalue('first_name')
    last_name  = form.getvalue('last_name')
    
    print("Content-Type:text/html\r\n\r\n")
    print("<html>")
    print("<head>")
    print("<title>Hello - Second CGI Program</title>")
    print("</head>")
    print("<body>")
    print("<h2>Hello %s %s</h2>" % (first_name, last_name))
    print("</body>")
    print("</html>")
    

1 个答案:

答案 0 :(得分:2)

我明白了。

在我的shebang系列中,而不是:

#!C:/Users/MyName/workspace/Flask/flask/Scripts

我应该:

#!C:/Users/MyName/workspace/Flask/flask/Scripts/python.exe

我认为我的shebang应该有一条通往python解释器所在地的路径,我没有意识到我需要翻译的实际完整路径。

现在正在运作。

回顾一下,如果您在遵循这些说明后遇到此问题: http://editrocket.com/articles/python_apache_windows.html 确保如果使用Windows,则路径是从C:/驱动器到python.exe可执行文件的完整绝对路径。