#あと一歩か。
#テキストエリアにメッセージがのこるのはなぜだろう
#これも何か足りないんだろうなぁ。js ファイル?
#のパスとかかうむむ。
#いやちがうなぁ。それなら Apacheのエラーログにjsファイルがないとでるはず。
#テキストエリアの書き込みを消すのはどこでどうしているのだろう?jsじゃないとしたら.css?
#でも、cssは効いている気がするなぁ。
#ああ全然わかってない。orz
#テキストエリアのクリアは明示的にやっているんだろうか? post()かなぁ。???
#あれ、何かに失敗しているのか。
#Ajax?
#なにかに失敗したので、enablePostにfalseが渡っているのかなぁ。chaton-poster-himaがエラーってことかな。
#でもそれはなぜ?
#なにかヒントを!
#なにかの設定がおかしいんだよねぇ。かんどころが全然わからない orz _o/|_ _o-___
#chaton-poster が 500 だ
#chat ボタンをクリックしたときになにが飛ぶかを見るのか。どうやれば見れるかな。firebugにそんな機能あったけか?
#ああ。もういちど最初からやりなおしてみよう。
#テキストエリアの書き込みを消すのはjsでやってるよ。ただ、postが成功しないと消さない。
#だから、jsが原因かpostがつっかえてるかをまず調べるべし。
#postが来てるかどうかはapache側で調べるか、あるいはLiveHttpHeaderとか。
#あと、jsのコンソールに何か出てるかとか。
#postは来ているんです。別ネットワークからアクセスすれば、post内容が見えるので。
#つまり、投稿はPOSTされているのだけれど、テキストエリアがクリアされないので、次の投稿をするときに、いちいち消さなければならない。という状況です。
#ってことはjavascript側だなあ。jsのコンソールには何も出てない?
#実際にテキストエリアをクリアしてるのはenablePost()。これはpost()のAjax.Requestの結果のハンドラから呼んでる。
#はい。chaton-poster が失敗しているということですよね。
#post()でfailureかexceptionになるとテキストエリアはクリアしないから、それが原因かも。サーバはちゃんとpostを受け取ってるんだけどまっとうなリプライを返してないってことか
#apacheのログでステータスコード見れるでしょ? 200返してる?
#あるいはLiveHTTPHeadersでリプライヘッダ見るか。
#500
#そのせいだな。
#書き込まれてるってことはcgiはキックされてると。ゴミを出力しちゃってるって可能性はあるかいな。
#シェルからchaton-poster起動するとどうなる?
#% ./chaton-poster /home/chaton/src
gosh: "error": Compile Error: cannot find file "chaton" in *load-path* ("@@server-data-dir@@" "/usr/local/share/gauche/site/lib" "/usr/local/share/gauche/0.9/lib")
"././chaton-poster":5:(define-module chaton.poster (use ww ...
#まちがえた。
#./chaton-poster-hima /home/chaton/haskell.jp/hima
Enter parameters (name=value). ^D to stop.
#^Dとやると
#*** ERROR: invalid application: (#f #<error "bad type of argument for s: #f">)
Stack Trace:
_______________________________________
0 on-error
1 (string-trim-both nick)
At line 28 of "././chaton-poster-hima"
2 (call-with-output-file |+current-file+| (cut update <> (string-tri ...
At line 26 of "././chaton-poster-hima"
3 (with-error-handler (lambda (e) (let ((e e)) (%guard-rec e e (else ...
[unknown location]
4 (chaton-with-exclusive-locking (lambda () (call-with-output-file | ...
At line 24 of "././chaton-poster-hima"
5 proc
6 (with-error-handler (lambda (e) (let ((e e)) (%guard-rec e e (else ...
[unknown location]
7 (cgi-main (lambda (params) (let ((nick (cgi-get-parameter "nick" p ...
At line 20 of "././chaton-poster-hima"
#ファイルにappendした後、リプライ返す前にこけてるってことか。あれ、でもそこでこけてるならなんでファイルはupdateされてるんだろう?
#あ、ちがうちがう。
#nickとtextはパラメータで与えないとだめだ。Enter parametersが出たら、
#nick=nobsun
#text=test
#^C
#じゃない、^D
#とかしてみて。name=valueは一行にひとつ。
#Enter parameters (name=value). ^D to stop.
nick=nobsun
text=test
Content-type: text/html
<html><head></head
><body></body
></html
>#t
#あれ、成功してるね。
#そう見えます。
#コマンドラインからだと成功して、apacheだと500になるってことはパーミッション関係かな? suExec使ってる? あとapacheのログにchaton-posterからのエラーは出てない?
#suExecはとくになにもしてない。ubuntuのapache2のデフォルト。
#だとしたら、chaton-posterが触ろうとしてるファイルのどれかがapache2権限で更新できないって可能性は考えられる。
#dataディレクトリ中のdata/last-postとか、htdocs-dir中のvarの下とか。
#ディレクトリおよび各ファイルがapache2権限で書き込み可能になってないとだめ。
#(htdocs-dir自体は書き込み可能でなくていい。varの下だけ。)
#ああそれだ。current.dat は書けるんだけど。last-postはだめでした。
#ディレクトリのパーミッションも注意。一度テンポラリに書いてからrenameするので、ディレクトリが書き込み可じゃないとだめ。
#そちらは手当してあった。
#ううむ。
#varのほうもok?
#あれ var って
#どこだ。
#server-htdocs-dirで指定したディレクトリの下にvarってのがあるでしょう
#ない。
#あれぇ、build-siteで作るはずだけどなあ。
#あった。見おとした。
#書き込み権限がなかった。var/
#書き込み権限をつけたら。OKになりました。
#うちがsuExecで動かしてるからbuild-siteでパーミッションは設定しないんだな。設定するようにしといたほうが親切設計ではあるな。
#$HTDOCSDIR/var にApacheが書き込みできなければならない。というのに気づかなかった。
#ああなるほど。
#> suExec
#あれれ、achiverをうごかすとパーミッションが。。。
#current.dat?
#archiverのwrite-entriesで書き込みした後に(sys-chmod file #o666) すればいいかな。やっぱりsuexecしてるかどうかをconfigに加えるべきか。
#なにか手当があるといいですね。