Recientemente descubrí que los scripts CGI se pueden escribir en prácticamente cualquier idioma que se pueda imprimir en stdout. He escrito un script CGI pequeña astucia que funciona en mi apache instalación local, pero no en mi servidor compartido:Guile Scheme and CGI?
#!/usr/local/bin/guile -s
!#
(display "Content-Type: text/html")
(newline)
(newline)
(display "hi")
(newline)
Ésta es la salida, cuando corro el guión de una concha en mi host a través de SSH:
$ ./scheme.cgi
Content-Type: text/html
hi
Así que, obviamente, mi anfitrión ha sido instalado. Sin embargo, cuando intento acceder a este archivo en un navegador, aparece el mensaje "500 Internal Server Error". Cuando se mira en mis registros de errores, veo que me estoy haciendo el "fin prematuro de las cabeceras de script" temido error:
[server.com] [Tue Aug 17 00:54:19 2010] [error] [client xx.xx.xx.xxx] (2)No such file or directory:
exec of '/home/www/vhosts/jcw.geekisp.com/cgi-bin/scheme.cgi' failed
[server.com] [Tue Aug 17 00:54:19 2010] [error] [client xx.xx.xx.xxx] Premature end
of script headers: scheme.cgi
porque estoy en un servidor compartido, usando mod_lisp o implementación fastcgi de Guile están fuera de la cuestión . Dicho eso, ¿cuál podría ser el problema aquí? Los scripts cgi similares que he escrito en python, perl, ruby y sh funcionan en el servidor sin errores. Veo que guile 1.8.7 está instalado en el host, pero mi máquina local está en la versión más nueva.
Entiendo que esta es una pregunta muy nicho, ¡cualquier ayuda sería apreciada!
¡Excelente idea, gracias! – jcw
Hace poco utilicé este método para obtener astucia trabajando en mi host para ejecutar programas CGI. Creé un pequeño script de shell (que los programas CGI ejecutan) para establecer LD_LIBRARY_PATH y GUILE_LOAD_PATH correctamente para donde se instale Guile. – gcbenison