我最近发现,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