Недавно я обнаружил, что скрипты CGI могут быть написаны практически на любом языке, который может печатать на stdout. Я написал сценарий CGI небольшой хитростью, которая работает на моем локальном апач установить, но не на моем виртуальном хостинге:Guile Scheme и CGI?
#!/usr/local/bin/guile -s
!#
(display "Content-Type: text/html")
(newline)
(newline)
(display "hi")
(newline)
Это выход, когда я запустить скрипт из командной строки на моем хосте через SSH:
$ ./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 лукавства находятся вне вопроса , Сказать, что может быть здесь? Подобные скрипты cgi, которые я написал в python, perl, ruby и sh, работают на сервере без ошибок. Я вижу, что guile 1.8.7 установлен на хосте, но мой локальный компьютер находится в самой новой версии.
Я понимаю, что это невероятно нишевый вопрос, любая помощь будет оценена!
Отличная идея, спасибо! – jcw
Недавно я использовал этот метод, чтобы заставить guile работать на моем хосте для запуска программ CGI. Я создал небольшой скрипт оболочки (который запускает программы CGI), чтобы правильно установить LD_LIBRARY_PATH и GUILE_LOAD_PATH, где установлен guile. – gcbenison