OCamlでCGI

mzp2006-07-03

まずは結論から。


#!/usr/local/bin/ocamlrun /usr/local/bin/ocaml
let _ = print_string "Content-type: text/html\n\n";
print_string "Hello, OCaml!!\n";
exit 0;;
ほいで、ここにたどり着くまでの軌跡をば。


#!/usr/local/bin/ocaml
let _ = print_string "Content-type: text/html\n\n";
print_string "Hello, OCaml!!\n";
exit 0;;
まず、最初にこれを書いたけれどなぜか動かない。

Apache曰く、

[Mon Jul  3 23:16:26 2006] [error] (8)Exec format error: exec of /Users/mzp/Sites/owiki/main.ml failed
[Mon Jul  3 23:16:26 2006] [error] [client 127.0.0.1] Premature end of script headers: /Users/mzp/Sites/owiki/main.ml

らしいけど、よくわからない。

いったんコンパイルしてやればうまく動いた。

$ ocamlc main.ml -o main.cgi

として、main.cgiにアクセスするとちゃんと動作する。

そして、main.cgiの先頭には「#!/usr/local/bin/ocamlrun」と書いてあったので、この二つを組み合わせてみたら、ちゃんと動作した。

あれ?なんでocamlなんだろ。ocamlcじゃないんかな?