首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Guile Scheme和CGI?

Guile Scheme和CGI?
EN

Stack Overflow用户
提问于 2010-08-18 01:57:15
回答 3查看 1.2K关注 0票数 6

我最近发现CGI脚本可以用几乎任何可以打印到stdout的语言编写。我已经写了一个小的guile cgi脚本,它可以在我本地的apache安装上运行,但不能在我的共享主机上运行:

代码语言:javascript
复制
#!/usr/local/bin/guile -s 
!#
(display "Content-Type: text/html")
(newline)
(newline)
(display "hi")
(newline)

这是我通过ssh从我的主机上的shell运行脚本时的输出:

代码语言:javascript
复制
$ ./scheme.cgi
Content-Type: text/html

hi

所以,很明显我的主机已经安装了guile。然而,当我试图在浏览器中访问这个文件时,我得到了一个"500 Internal Server Error“。当查看我的错误日志时,我看到了可怕的“脚本头过早结束”错误:

代码语言:javascript
复制
[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或guile的fastcgi实现是不可能的。话虽如此,这里的问题可能是什么?我用python、perl、ruby和sh编写的类似的cgi脚本可以在服务器上运行,没有错误。我看到主机上安装了guile 1.8.7,但我的本地计算机使用的是最新版本。

我明白这是一个令人难以置信的小众问题,任何帮助都将不胜感激!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-22 04:21:03

您还可以编译您自己的guile副本或诸如此类的东西,并将其存储在~/bin/目录中,并让脚本指向该目录。

票数 6
EN

Stack Overflow用户

发布于 2010-08-18 03:52:21

我认为这个错误意味着你的web服务器进程不能访问/usr/local/bin/guile解释器。检查该文件的权限,确保它是可访问的,如果服务器在chroot中运行或在强制访问控制下,等等。当你在脚本上时,仔细检查脚本上的权限。

票数 4
EN

Stack Overflow用户

发布于 2010-08-19 22:19:23

事实证明,在服务器上执行ssh命令时存在的/usr/local/bin目录与通过浏览器提供和访问脚本时的/usr/local/bin目录不同。我找出了通过这个CGI脚本可用的解释器:

代码语言:javascript
复制
#!/bin/sh
echo "Content type: text/html\r\n\r\n"
echo "ls /usr/local/bin"

当我通过浏览器运行此脚本时,我发现列出了mzscheme,但没有列出guile。所以,问题解决了,我使用mzscheme。

谢谢,卡尔。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3505430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档