cgi.FieldStorage() not working on Windows

arorap arorap at gmail.com
Tue Jun 12 22:58:14 EDT 2007


Thanks for your reply.

The reason I want to run it as CGI (even though mod_php is available
on my local computer) is that the target machine to which I will
finally be uploading my scripts runs CGI.

cgihandler should work just like CGI. Any clue why the
cgi.FieldStorage()might not be working ?


On Jun 12, 7:59 pm, Graham Dumpleton <Graham.Dumple... at gmail.com>
wrote:
> 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