Recentemente ho scoperto che gli script CGI possono essere scritti in quasi tutti i linguaggi che possono essere stampati su stdout. Ho scritto uno script CGI piccola astuzia che funziona sul mio apache installazione locale, ma non sul mio host condiviso:Schema del Guile e CGI?
#!/usr/local/bin/guile -s
!#
(display "Content-Type: text/html")
(newline)
(newline)
(display "hi")
(newline)
Questa è l'uscita, quando ho eseguito lo script da una shell su mio ospite su SSH:
$ ./scheme.cgi
Content-Type: text/html
hi
Quindi, ovviamente il mio host ha installato guile. Tuttavia, quando provo ad accedere a questo file in un browser, viene visualizzato il messaggio "Errore interno server 500". Se si guarda a miei log di errore, vedo che sto ottenendo la "fine prematura di intestazioni di script" temuto errore:
[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
Perché io sono su un host condiviso, utilizzando mod_lisp o implementazione di FastCGI di frode sono fuori questione . Detto questo, quale potrebbe essere il problema qui? Script cgi simili che ho scritto in python, perl, ruby e sh sul server senza errori. Vedo che 1.8.7 guile è installato sull'host, ma il mio computer locale è sulla versione più recente.
Capisco che questa è una domanda incredibilmente di nicchia, qualsiasi aiuto sarebbe apprezzato!
Ottima idea, grazie! – jcw
Recentemente ho usato questo metodo per ottenere l'ingiunzione di lavorare sul mio host per l'esecuzione di programmi CGI. Ho creato un piccolo script di shell (che eseguire i programmi CGI) per impostare LD_LIBRARY_PATH e GUILE_LOAD_PATH correttamente per cui è installato l'astuzia. – gcbenison