J'ai récemment découvert que les scripts CGI peuvent être écrits dans pratiquement toutes les langues pouvant être imprimées sur stdout. J'ai écrit un petit point de fraude script cgi qui fonctionne sur mon apache installation locale, mais pas sur mon hôte partagé:Guile Scheme et CGI?
#!/usr/local/bin/guile -s
!#
(display "Content-Type: text/html")
(newline)
(newline)
(display "hi")
(newline)
Ceci est la sortie, quand je lance le script à partir d'un shell sur mon hôte sur ssh:
$ ./scheme.cgi
Content-Type: text/html
hi
Donc, évidemment, mon hôte a installé guile. Cependant, lorsque j'essaie d'accéder à ce fichier dans un navigateur, j'obtiens une erreur "500 Internal Server Error". Lorsque l'on regarde mes journaux d'erreurs, je vois que je reçois le redoutable erreur « fin prématurée des en-têtes de script »:
[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
Parce que je suis sur un hébergement mutualisé, en utilisant la mise en œuvre mod_lisp ou fastcgi de fraude sont hors de question . Cela étant dit, quel pourrait être le problème ici? Des scripts cgi similaires que j'ai écrits en python, perl, ruby et sh fonctionnent sur le serveur sans erreur. Je vois que la version 1.8.7 est installée sur l'hôte, mais ma machine locale est sur la version la plus récente. Je comprends que c'est une question incroyablement niche, toute aide serait appréciée!
Excellente idée, merci! – jcw
J'ai récemment utilisé cette méthode pour faire fonctionner le guile sur mon hôte pour exécuter des programmes CGI. J'ai créé un petit script shell (que les programmes CGI exécutent) pour définir correctement LD_LIBRARY_PATH et GUILE_LOAD_PATH là où guile est installé. – gcbenison