Foros del Web » Administración de Sistemas » Unix / Linux »

[SOLUCIONADO] CGI: Premature end of script headers

Estas en el tema de CGI: Premature end of script headers en el foro de Unix / Linux en Foros del Web. Hola a todos, como va? Les comento, tengo un servidor (compartido) en una empresa de hosting que tiene soporte para Python (2.5). La verdad es ...
  #1 (permalink)  
Antiguo 05/06/2013, 13:58
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 10 meses
Puntos: 35
CGI: Premature end of script headers

Hola a todos, como va?

Les comento, tengo un servidor (compartido) en una empresa de hosting que tiene soporte para Python (2.5). La verdad es un desastre, todo muy desactualizado y la atención horrible, pero no viene al caso. El script que tengo es este:

Código Python:
Ver original
  1. # -*- coding: utf-8 -*-
  2.  
  3. print "Content-Type: text/html"
  4. print
  5.  
  6. for mode in ("w", "wb"):
  7.     f = open("test_%s.py" % mode, mode)
  8.     f.write('''# -*- coding: utf-8 -*-
  9.  
  10. print "Content-type: text/html"
  11. print
  12.  
  13. print "<h3>Hello, world!</h3>"''')
  14.     f.close()

Como verán, lo que hace es crear dos archivos (test_w.py, y test_wb.py) con sus respectivos modos. Al ingresar a cualquiera de los dos scripts vía web obtengo los siguientes errores:

Cita:
[Wed Jun 05 16:48:52 2013] [error] [client 200.114.249.23] suexec policy violation: see suexec log for more details
[Wed Jun 05 16:48:52 2013] [error] [client 200.114.249.23] Premature end of script headers: test_w.py
[Wed Jun 05 16:48:55 2013] [error] [client 200.114.249.23] suexec policy violation: see suexec log for more details
[Wed Jun 05 16:48:55 2013] [error] [client 200.114.249.23] Premature end of script headers: test_wb.py
Funcionan perfectamente de manera local, pero no en el hosting. Aclaro, si creo manualmente el contenido de cualquiera de los dos archivos, y lo subo, funciona bien. Al parecer el problema radica al pasar de Windows al sistema operativo del hosting (alguna distro de Linux supongo).
Por lo que investigué, el error puede aparecer cuando hay no hay permisos para acceder al script, así que intenté haciendo chmod 755 o chmod 750 pero no hay caso. Un dato importante es: al descargar el archivo vía ftp (test_wb.py) y volverlo a subir, funciona. Al parecer mi cliente FTP (FileZilla) guarda el archivo de una tal manera que es la que necesita el servidor para ejecutar bien el archivo.

Me estoy volviendo loco con esto, espero que puedan ayudarme.

  #2 (permalink)  
Antiguo 05/06/2013, 14:31
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: CGI: Premature end of script headers

Necesitas poner los permisos correctos 755 al archivo.

Y asegúrate que la carpeta tenga permisos de escritura y lectura para el usuario que esta ejecutando el script.

Ademas de leer tus logs del suexec para que te den mas detalle.
  #3 (permalink)  
Antiguo 05/06/2013, 14:52
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 10 meses
Puntos: 35
Respuesta: CGI: Premature end of script headers

Gracias por la respuesta. Como dije anteriormente, ya intenté poniendo los permisos 755 e incluso 750 pero el problema persiste. Si fuera un problema de permisos, debería persistir al descargar y subir el archivo vía FTP, no? Sin embargo, el problema se soluciona.

Gracias de nuevo!
  #4 (permalink)  
Antiguo 05/06/2013, 16:18
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: CGI: Premature end of script headers

Si tiene los permisos 755 esta bien pero esto es solo para poder ejecutar tu script. Si tu script hace lecturas o escrituras en otra parte, tienes que asegurarte que el usuario que este ejecutando el script tenga los permisos para leer o escribir esos archivos.

Pero la carpeta tiene que poder leer y escribir el usuario que ejecuta el script probablemente www-data, apache o algún usuario similar. Es por eso que te marca error. Vuelvo a remarcarlo la carpeta no tu script.

En todo caso no es problema de python, si no de permisos en tu filesystem.

Por ultimo para demostrar que efectivamente no tienes permisos de escritura en tu carpeta. Cuando corras este script
Código Python:
Ver original
  1. # -*- coding: utf-8 -*-
  2. import os
  3. import pwd
  4.  
  5. print "Content-Type: text/html"
  6. print
  7.  
  8. for mode in ("w", "wb"):
  9.     try:
  10.         f = open("test_%s.py" % mode, mode)
  11.         f.write('''# -*- coding: utf-8 -*-
  12.  
  13. print "Content-type: text/html"
  14. print
  15.  
  16. print "<h3>Hello, world!</h3>"''')
  17.         f.close()
  18.     except IOError, e:
  19.         print "<p>usuario %s: Error %s</p>" % (pwd.getpwuid(os.getuid())[0], e)
Te imprimirá el usuario y el error `[Errno 13] Permission denied:`
  #5 (permalink)  
Antiguo 07/06/2013, 15:31
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 10 meses
Puntos: 35
Respuesta: CGI: Premature end of script headers

Hola nuevamente.

Pude resolver el problema. Como decías vos, el tema estaba en los archivos que generaba, que tenían asignado como permisos el número 1363, aunque yo indicaba que fueran 755. Al parecer se trata de un bug de Debian por lo que solucioné cambiando el 755 (que se interpretaba como 1363) por 493 (que se interpreta como 755). Por lo que veo el bug está solucionado pero, de no sorprenderme, el hosting tiene una versión desactualizada.

Gracias por todo!
  #6 (permalink)  
Antiguo 07/06/2013, 15:35
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: CGI: Premature end of script headers

Bien entonces moveré esto al foro de linux/unix para futuras referencias. Ya que no tuvo nada que ver con python.
  #7 (permalink)  
Antiguo 07/06/2013, 15:46
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 8 meses
Puntos: 1329
Respuesta: CGI: Premature end of script headers

Y nada más para agregar y a modo de off-topic. Espero que las razones de hacer una web por medio de CGI (y así como las estás haciendo) sean solo de manera educativa. Si quieres desarrollar webs con python lo más recomendable es que uses un framework.

Saludos
__________________
Grupo Telegram Docker en Español
  #8 (permalink)  
Antiguo 07/06/2013, 16:07
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 10 meses
Puntos: 35
Respuesta: CGI: Premature end of script headers

Hola. De hecho, me ví obligado a hacer la web vía CGI por las limitaciones del hosting.

  #9 (permalink)  
Antiguo 07/06/2013, 16:11
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 8 meses
Puntos: 1329
Respuesta: CGI: Premature end of script headers

¿Y por que tu script escribe archivos python en lugar de escribir y ejecutarlos?

Insisto, que esa forma es "primitiva", y hacer algo medianamente complejo va a ser totalmente inmantenible.

Saludos
__________________
Grupo Telegram Docker en Español
  #10 (permalink)  
Antiguo 07/06/2013, 18:04
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: CGI: Premature end of script headers

Parece que puedes ejecutar Django vía CGI.

http://joemaller.com/1467/django-via...hared-hosting/

Obviamente vas a tener que usar una versión algo vieja, alguna que soporte python 2.5.
  #11 (permalink)  
Antiguo 08/06/2013, 13:48
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 10 meses
Puntos: 35
Respuesta: CGI: Premature end of script headers

Cita:
Iniciado por Carlangueitor Ver Mensaje
¿Y por que tu script escribe archivos python en lugar de escribir y ejecutarlos?

Insisto, que esa forma es "primitiva", y hacer algo medianamente complejo va a ser totalmente inmantenible.

Saludos
Eso era únicamente para mostrar lo que pasaba si el archivo no lo subía desde el cliente FTP.

Gracias razpeitia por la info, voy a ver de que se trata, aunque nunca usé Django; web.py me va bien que lo vengo usando hace bastante.

Por último aclaro nuevamente que me vi obligado a hacerlo vía CGI, y espero que sea la ultima vez quetenga que usarlo porque me resultó desastroso.


Etiquetas: cgi, end, errores, file, headers, local, print, python, utf-8
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:46.