我最近發現,CGI腳本可以用幾乎可以打印到標準輸出的任何語言編寫。我寫了一個小詭計CGI腳本,它在我的本地apache的安裝工作,但不是我的共享主機:Guile計劃和CGI?
#!/usr/local/bin/guile -s
!#
(display "Content-Type: text/html")
(newline)
(newline)
(display "hi")
(newline)
這是輸出,當我從我的主機通過ssh的shell運行腳本:
$ ./scheme.cgi
Content-Type: text/html
hi
所以,顯然我的主機已經裝好了。但是,當我嘗試在瀏覽器中訪問此文件時,出現「500內部服務器錯誤」。當我的錯誤日誌看,我看到,我得到了可怕的「腳本頭過早結束」錯誤:
[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
因爲我是一個共享的主機上,使用mod_lisp或哄騙的FastCGI的實現是不可能的。話雖如此,這裏可能是什麼問題?我用python,perl,ruby和sh編寫的類似cgi腳本在服務器上工作,沒有任何錯誤。我看到主機上安裝了guile 1.8.7,但我的本地機器是最新版本。
我明白,這是一個令人難以置信的利基問題,任何幫助將不勝感激!
非常好的主意,謝謝! – jcw 2010-08-22 18:40:35
我最近使用這種方法在我的主機上運行CGI程序時使用了guile。我創建了一個小型shell腳本(CGI程序運行時),以正確設置安裝了guile的LD_LIBRARY_PATH和GUILE_LOAD_PATH。 – gcbenison 2012-03-03 05:32:59