Ich habe kürzlich entdeckt, dass CGI-Skripte in so ziemlich jeder Sprache geschrieben werden können, die auf stdout drucken kann. Ich habe einen kleine List CGI-Skript geschrieben, das auf meinem lokalen Apache funktioniert installieren, aber nicht auf meinem Hostern:Guile Scheme und CGI?
#!/usr/local/bin/guile -s
!#
(display "Content-Type: text/html")
(newline)
(newline)
(display "hi")
(newline)
Dies ist der Ausgang, wenn ich das Skript von einem Shell auf meinem Host über SSH ausführen:
$ ./scheme.cgi
Content-Type: text/html
hi
Also, offensichtlich hat mein Host Guile installiert. Wenn ich jedoch versuche, auf diese Datei in einem Browser zuzugreifen, erhalte ich einen "500 Internal Server Error". Wenn meine Fehlerprotokolle suchen, ich sehe, dass ich das gefürchtete „vorzeitige Ende der Skript-Header“ Störung erhalten:
[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
Weil ich auf einem gemeinsamen Host bin, mit mod_lisp oder FastCGI-Implementierung Arglist indiskutabel sind . Davon abgesehen, was könnte das Problem hier sein? Ähnliche CGI-Skripte, die ich in Python, Perl, Ruby und Sh geschrieben habe, funktionieren fehlerfrei auf dem Server. Ich sehe, dass Guile 1.8.7 auf dem Host installiert ist, aber meine lokale Maschine ist auf der neuesten Version.
Ich verstehe, dass dies eine unglaublich Nischenfrage ist, würde jede Hilfe geschätzt werden!
Ausgezeichnete Idee, danke! – jcw
Ich habe vor kurzem diese Methode verwendet, um auf meinem Host zu arbeiten, um CGI-Programme auszuführen. Ich habe ein kleines Shell-Skript erstellt (welches die CGI-Programme ausführen), um LD_LIBRARY_PATH und GUILE_LOAD_PATH korrekt für die Installation von GUILE zu setzen. – gcbenison