cgi.FieldStorage() not working on Windows

Graham Dumpleton Graham.Dumpleton at gmail.com
Tue Jun 12 19:59:50 EDT 2007


On Jun 13, 1:17 am, arorap <aro... at gmail.com> wrote:
> I've mod_php installed with Apache 2.2. In one of my folders, I'm
> using the cgihandler as the PythonHandler as my target host runs
> python only as CGI. Here cgi.FieldStorage() doesn't seem to work. I
> can see the form data in sys.stdin but cgi.FieldStorage() returns an
> empty dictionary. Here's the code for the test script I am posting to
> -
>
> --
> #!/usr/bin/python
>
> import os
> import cgi
> import sys
>
> print "Content Type: text/plain\n\n"
> print "Hello CGI World !\n"
>
> for key in os.environ:
>   print key + "= " + os.environ[key]
>
> print cgi.FieldStorage()
>
> print sys.stdin.read()
> --
>
> And here's the output I see ..
>
> --
> Hello CGI World !
>
> HTTP_REFERER=http://learnpython/form.htm
> SERVER_SOFTWARE= Apache/2.2.4 (Win32)mod_python/3.3.1 Python/2.5.1
> SCRIPT_NAME= /mptest.py
> SERVER_SIGNATURE=
> REQUEST_METHOD= POST
> SERVER_PROTOCOL= HTTP/1.1
> QUERY_STRING= abc=ayz
> PATH= C:\Program Files\Internet Explorer;;C:\WINDOWS\system32;C:
> \WINDOWS;C:\WINDOWS\System32\Wbem;q:\bin;m:\cm\clearcase\bin;M:\PERL\NT
> \EXEC\BIN;m:\cm\clearcase\bin\nt;M:\Perl\NT\EXEC\BIN;m:\perl\nt\exec
> \bin;m:\cm\clearcase\utils;q:\bin;m:\opus;m:\tvcs;C:\highc331\bin;C:
> \Program Files\Rational\ClearCase\bin;C:\Program Files\Rational\common
> CONTENT_LENGTH= 86
> HTTP_USER_AGENT= Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;
> SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
> HTTP_CONNECTION= Keep-Alive
> SERVER_NAME= learnpython
> REMOTE_ADDR= 127.0.0.1
> PATHEXT= .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
> SERVER_PORT= 80
> SERVER_ADDR= 127.0.0.1
> DOCUMENT_ROOT= D:/Projects/LearnPython/www
> COMSPEC= C:\WINDOWS\system32\cmd.exe
> SCRIPT_FILENAME= D:/Projects/LearnPython/www/mptest.py
> SERVER_ADMIN= puneet.ar... at tekelec.com
> HTTP_HOST= learnpython
> SystemRoot= C:\WINDOWS
> HTTP_CACHE_CONTROL= no-cache
> REQUEST_URI= /mptest.py?abc=ayz
> HTTP_ACCEPT= */*
> WINDIR= C:\WINDOWS
> GATEWAY_INTERFACE= Python-CGI/1.1
> REMOTE_PORT= 1081
> HTTP_ACCEPT_LANGUAGE= en-us
> CONTENT_TYPE= application/x-www-form-urlencoded
> HTTP_ACCEPT_ENCODING= gzip, deflate
>
> FieldStorage(None, None, [])
>
> firstName=puneet&address=hawaii
> --
>
> I am posting to this script using a form with two text fields named
> firstName and address.
>
> any clue where am I going wrong ?

You don't need mod_python/cgihandler to run CGI scripts. Rather than
bring mod_python into the picture and confuse things, set up Apache to
run your script as a traditional CGI script instead.

BTW, the fact that mod_python is loaded means that CGI scripts aren't
the only way of using Python available to you as you seem to think.
So, suggest you do some research as to what the differences are
between CGI and mod_python.

Graham




More information about the Python-list mailing list