私は最近、CGIスクリプトがstdoutに出力できるほとんどすべての言語で記述できることを発見しました。ローカルのapacheインストールでは機能するが、共有ホストでは機能しない小さなguilecgiスクリプトを作成しました。
#!/usr/local/bin/guile -s
!#
(display "Content-Type: text/html")
(newline)
(newline)
(display "hi")
(newline)
これは、ホスト上のシェルからsshを介してスクリプトを実行したときの出力です。
$ ./scheme.cgi
Content-Type: text/html
hi
だから、明らかに私のホストにはguileがインストールされています。ただし、ブラウザでこのファイルにアクセスしようとすると、「500InternalServerError」が発生します。エラーログを見ると、恐ろしい「スクリプトヘッダーの早期終了」エラーが発生していることがわかります。
[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がホストにインストールされているようですが、ローカルマシンは最新バージョンです。
これは非常にニッチな質問であることを理解しています。助けていただければ幸いです。