¿error de sintaxis en modulo cgi?
Manuel Tejada
mantemu en terra.com.pe
Mie Nov 19 05:52:31 CET 2003
Tengo Python 2.3.2 instalado en Windows 2000
Recientemente he construido el siguiente script de nombre "pruebacgi.py"
solo con el proposito de hacer una prueba de funcionalidad del módulo cgi:
---
#! E:\Python23\python
import cgi
import cgitb; cgitb() # Esto activa un exception handler especial que
mostrará un reporte detallado en el Web browser si ocurre un error
cgi.test()
----
Cuando ingreso http://localhost:8080/cgi-bin/pruebacgi.py se obtiene la
siguiente salida:
------
Current Working Directory:
F:\Archivos de programa\Apache Group\Apache2\cgi-bin
Command Line Arguments:
['F:/Archivos de programa/Apache Group/Apache2/cgi-bin/pruebacgi.py']
Form Contents:
No form fields.
Shell Environment:
COMSPEC
F:\WINNT\system32\cmd.exe
DOCUMENT_ROOT
F:/Archivos de programa/Apache Group/Apache2/htdocs
GATEWAY_INTERFACE
CGI/1.1
HTTP_ACCEPT
image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,
application/vnd.ms-excel, application/msword, application/x-shockwave-flash,
*/*
HTTP_ACCEPT_ENCODING
gzip, deflate
HTTP_ACCEPT_LANGUAGE
es-pe,en-us;q=0.5
HTTP_CONNECTION
Keep-Alive
HTTP_HOST
localhost:8080
HTTP_USER_AGENT
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)
PATH
E:\Perl\bin\;F:\Oracle\Ora81\bin;F:\Archivos de
programa\Oracle\jre\1.1.7\bin;F:\WINNT\system32;F:\WINNT;F:\WINNT\System32\W
bem;;F:\ORANT\BIN;F:\pgsql\bin;C:\BITWARE\;C:\WINDOWS;C:\WINDOWS\COMMAND;E:\
PERL\BIN;C:\CYGWIN\BIN
PATHEXT
.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
QUERY_STRING
REMOTE_ADDR
127.0.0.1
REMOTE_PORT
1048
REQUEST_METHOD
GET
REQUEST_URI
/cgi-bin/pruebacgi.py
SCRIPT_FILENAME
F:/Archivos de programa/Apache Group/Apache2/cgi-bin/pruebacgi.py
SCRIPT_NAME
/cgi-bin/pruebacgi.py
SERVER_ADDR
127.0.0.1
SERVER_ADMIN
mantemu en terra.com.pe
SERVER_NAME
localhost
SERVER_PORT
8080
SERVER_PROTOCOL
HTTP/1.1
SERVER_SIGNATURE
<address>Apache/2.0.43 Server at localhost Port 8080</address>
SERVER_SOFTWARE
Apache/2.0.43 (Win32) mod_perl/1.99_10-dev Perl/v5.8.0 PHP/4.3.0
SYSTEMROOT
F:\WINNT
WINDIR
F:\WINNT
These environment variables could have been set:
AUTH_TYPE
CONTENT_LENGTH
CONTENT_TYPE
DATE_GMT
DATE_LOCAL
DOCUMENT_NAME
DOCUMENT_ROOT
DOCUMENT_URI
GATEWAY_INTERFACE
LAST_MODIFIED
PATH
PATH_INFO
PATH_TRANSLATED
QUERY_STRING
REMOTE_ADDR
REMOTE_HOST
REMOTE_IDENT
REMOTE_USER
REQUEST_METHOD
SCRIPT_NAME
SERVER_NAME
SERVER_PORT
SERVER_PROTOCOL
SERVER_ROOT
SERVER_SOFTWARE
In addition, HTTP headers sent by the server may be passed in the
environment as well. Here are some common variable names:
HTTP_ACCEPT
HTTP_CONNECTION
HTTP_HOST
HTTP_PRAGMA
HTTP_REFERER
HTTP_USER_AGENT
What follows is a test, not an actual exception:
Traceback (most recent call last):
File "E:\Python23\lib\cgi.py", line 905, in test
g()
File "E:\Python23\lib\cgi.py", line 903, in g
f()
File "E:\Python23\lib\cgi.py", line 901, in f
exec "testing print_exception() -- <I>italics?</I>"
File "<string>", line 1
testing print_exception() -- <I>italics?</I>
^
SyntaxError: invalid syntax
Second try with a small maxlen...
Current Working Directory:
F:\Archivos de programa\Apache Group\Apache2\cgi-bin
Command Line Arguments:
['F:/Archivos de programa/Apache Group/Apache2/cgi-bin/pruebacgi.py']
Form Contents:
No form fields.
Shell Environment:
COMSPEC
F:\WINNT\system32\cmd.exe
DOCUMENT_ROOT
F:/Archivos de programa/Apache Group/Apache2/htdocs
GATEWAY_INTERFACE
CGI/1.1
HTTP_ACCEPT
image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,
application/vnd.ms-excel, application/msword, application/x-shockwave-flash,
*/*
HTTP_ACCEPT_ENCODING
gzip, deflate
HTTP_ACCEPT_LANGUAGE
es-pe,en-us;q=0.5
HTTP_CONNECTION
Keep-Alive
HTTP_HOST
localhost:8080
HTTP_USER_AGENT
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)
PATH
E:\Perl\bin\;F:\Oracle\Ora81\bin;F:\Archivos de
programa\Oracle\jre\1.1.7\bin;F:\WINNT\system32;F:\WINNT;F:\WINNT\System32\W
bem;;F:\ORANT\BIN;F:\pgsql\bin;C:\BITWARE\;C:\WINDOWS;C:\WINDOWS\COMMAND;E:\
PERL\BIN;C:\CYGWIN\BIN
PATHEXT
.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
QUERY_STRING
REMOTE_ADDR
127.0.0.1
REMOTE_PORT
1048
REQUEST_METHOD
GET
REQUEST_URI
/cgi-bin/pruebacgi.py
SCRIPT_FILENAME
F:/Archivos de programa/Apache Group/Apache2/cgi-bin/pruebacgi.py
SCRIPT_NAME
/cgi-bin/pruebacgi.py
SERVER_ADDR
127.0.0.1
SERVER_ADMIN
mantemu en terra.com.pe
SERVER_NAME
localhost
SERVER_PORT
8080
SERVER_PROTOCOL
HTTP/1.1
SERVER_SIGNATURE
<address>Apache/2.0.43 Server at localhost Port 8080</address>
SERVER_SOFTWARE
Apache/2.0.43 (Win32) mod_perl/1.99_10-dev Perl/v5.8.0 PHP/4.3.0
SYSTEMROOT
F:\WINNT
WINDIR
F:\WINNT
-----
Esta salida me está indicando que el módulo cgi.py esta bien porque está
imprimiendo mis variables de ambiente. Pero lo que realmente me preocupa es
la parte siguiente que reprodusco a continuación:
--
What follows is a test, not an actual exception:
Traceback (most recent call last):
File "E:\Python23\lib\cgi.py", line 905, in test
g()
File "E:\Python23\lib\cgi.py", line 903, in g
f()
File "E:\Python23\lib\cgi.py", line 901, in f
exec "testing print_exception() -- <I>italics?</I>"
File "<string>", line 1
testing print_exception() -- <I>italics?</I>
^
SyntaxError: invalid syntax
----
¿Significa que verdaderamente existe un error de sintaxis en el módulo
cgi.py?
¿Si esto es cierto como puedo corregirlo?
De todas formas me parece extraño que exista un error porque se supone que
el módulo cgi.py está libre de ellos
Espero sus comentarios
Manuel Tejada
Más información sobre la lista de distribución Python-es