Movable Type 4の組み込みCAPTCHAのXREAでの稼働

| コメント(0)

MT4の組み込みCAPTCHAが働いていませんでした。完全に確認漏れです。申し訳ありません。

障害報告内容と対応の詳細は、以下の通りです。

障害報告内容

どこかの会社のようなフォーマットですが......。

発生事象

Movable Type 4のCAPTCHAが稼働していない。CAPTCHA画像が表示されず、当該URIにアクセスするとHTTP 500が帰る。

発見経緯

2009-07-25T03:00:00+0900頃、エラーログを眺めていて発見した。

影響範囲

Eorzea Lounge内の、コメント投稿可能な全てのウェブログ記事およびウェブページで、コメントを投稿出来ない。ただし、Open ID, LiveJournal, Vox, Yahoo, Yahoo Japan, Livedoor, AIM, hatena, WordPress.comの外部認証を使った場合は除く(それらによる認証時にはコメント投稿が可能である)。

暫定対応

代替策があった他、根本対応をすぐに行えたため、CAPTCHAを取り外すなどの対応は行わなかった。また、閲覧者が少ないこともあり、対外的な報告の類も差し控えた。

推定原因

XREAのドメインウェブを設定し、/virtual/eorzea/public_html/mt/のシンボリックリンクを触っていることが原因と推定されるが、後述の通りうやむやなままとした(核爆)。

根本対応

後述の「対応内容」の通り。

再発防止策

外部アプリケーションパッケージを使用する場合は、主要な機能の稼働確認を行う。Movable Typeでは、コメントの投稿もテスト項目に加える。

対応内容

原因調査

Perlモジュールの導入確認(確認済)

eorzea@s345:~> perl -MImage::Magick -MCrypt::DH -e 'print "hoge\n"'
hoge

取り敢えずモジュールは揃っていますね。

MT環境変数の追加(実効なし)

MT4 FAQにあるように、mt-config.cgiに以下の指定を施しても駄目でした。

CaptchaSourceImageBase /virtual/eorzea/public_html/mt/mt-static/images/captcha-source

上記ディレクトリにファイルが存在することは確認済みです。

eorzea@s345:~> ls /virtual/eorzea/public_html/mt/mt-static/images/captcha-source
2.png  6.png  a.png            background4.png  d.png  h.png  l.png  p.png  t.png  x.png
3.png  7.png  background1.png  background5.png  e.png  i.png  m.png  q.png  u.png  y.png
4.png  8.png  background2.png  b.png            f.png  j.png  n.png  r.png  v.png  z.png
5.png  9.png  background3.png  c.png            g.png  k.png  o.png  s.png  w.png

そもそも管理画面で「CAPTCHAプロバイダがありません」エラーが出ているわけではないので、ここまでの対応はあくまで念のための確認といったところでした。

CGIエラーの確認(1)

単にアクセスするだけでは変わりません。

eorzea@s345:~> perl -MWWW::Mechanize -e "print WWW::Mechanize->new->get('http://blog.eorze
a.asia/mt/mt-comments.cgi/captcha/1/yQ9aiqJJKLy5tHRxz7kHJborIMsAtVgPAun9AMR7')->as_string;
"
HTTP/1.1 500 Internal Server Error
Connection: close
Date: Fri, 24 Jul 2009 18:37:06 GMT
Server: Apache
Content-Type: text/html
Client-Date: Fri, 24 Jul 2009 18:37:11 GMT
Client-Peer: 59.139.29.101:80
Client-Response-Num: 1
Client-Transfer-Encoding: chunked

Script Error

The script did not produce proper HTTP headers. Please see the error log to see the detail of the errors. Depending on the server configuration, you can also run thisscript under CGIWrap debugging. Usually, either rename or linkthe script temporarily to a file which ends with .cgidextension, or add a AddHandler cgi-script-debug .cgiline to your .htaccess file.

CGIエラーの確認(2)

cgidという拡張子にして試しますが、結果をどう解釈した物やら(笑)。一応PNGイメージは出て来てしまっています。

eorzea@s345:~> cp -ip ./public_html/mt/mt-comments.cgi ./public_html/mt/mt-comments.cgid
eorzea@s345:~> chmod 700 ./public_html/mt/mt-comments.cgid
eorzea@s345:~> perl -MWWW::Mechanize -e "print WWW::Mechanize->new->get('http://blog.eorzea.asia/mt/mt-comments.cgid/captcha/1/yQ9aiqJJKLy5tHRxz7kHJborIMsAtVgPAun9AMR7')->as_string;"

Initializing Logging
Redirecting STDERR to STDOUT

Setting SIGXCPU to default behaviour

Limiting (cpu time) to (300)

Limiting (total available memory) to (160000000)

Limiting (resident set size) to (160000000)

Limiting (number of processes) to (15)


Environment Variables:
     QUERY_STRING: ''
      SCRIPT_NAME: '/mt/mt-comments.cgid'
        PATH_INFO: '/-/mt/mt-comments.cgid/captcha/1/yQ9aiqJJKLy5tHRxz7kHJborIMsAtVgPAun9AMR7'
    DOCUMENT_ROOT: '/virtual/eorzea/public_html/blog.eorzea.asia'
  PATH_TRANSLATED: '/virtual/eorzea/public_html/blog.eorzea.asia/captcha/1/yQ9aiqJJKLy5tHRxz7kHJborIMsAtVgPAun9AMR7'
      REMOTE_USER: ''
      REMOTE_HOST: ''
      REMOTE_ADDR: '61.210.86.128'

User Data Retrieved:
     UserID: 'eorzea'
        UID: '11028'
        GID: '20000'
   Home Dir: '/virtual/eorzea'

Script Base Directory:  '/virtual/eorzea/public_html/blog.eorzea.asia'
Trying to extract script from PATH_INFO
    Script Relative Path:  'mt/mt-comments.cgid'
    Script Absolute Path:  '/virtual/eorzea/public_html/blog.eorzea.asia/mt/mt-comments.cgid'

Fixing Environment Variables.

Environment Variables:
     QUERY_STRING: ''
      SCRIPT_NAME: '/mt/mt-comments.cgid'
        PATH_INFO: '/captcha/1/yQ9aiqJJKLy5tHRxz7kHJborIMsAtVgPAun9AMR7'
    DOCUMENT_ROOT: '/virtual/eorzea/public_html/blog.eorzea.asia'
  PATH_TRANSLATED: '/virtual/eorzea/public_html/blog.eorzea.asia/captcha/1/yQ9aiqJJKLy5tHRxz7kHJborIMsAtVgPAun9AMR7'
      REMOTE_USER: ''
      REMOTE_HOST: ''
      REMOTE_ADDR: '61.210.86.128'


UIDs/GIDs Changed To:
   RUID: '11028'
   EUID: '11028'
   RGID: '20000'
   EGID: '20000'

Changing current directory to '/virtual/eorzea/public_html/blog.eorzea.asia/mt'



argv[0] =  'cgiwrapd'
Executing  '/virtual/eorzea/public_html/blog.eorzea.asia/mt/mt-comments.cgid'
Output of script follows:
=====================================================
Error: /invalidfont in /findfont
Operand stack:
   Times-Roman-ISO   Times-Roman-ISO   Times-Roman
Execution stack:
   %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   --nostringval--   false   1   %stopped_push   1905   1   3   %oparray_pop   1904   1   3   %oparray_pop   1888   1   3   %oparray_pop   1771   1   3   %oparray_pop   --nostringval--   %errorexec_pop   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   1863   3   3   %oparray_pop
Dictionary stack:
   --dict:1151/1684(ro)(G)--   --dict:0/20(G)--   --dict:72/200(L)--
Current allocation mode is local
Last OS error: 2
Current file position is 263
GPL Ghostscript 8.61: Unrecoverable error, exit code 1
Error: /invalidfont in /findfont
Operand stack:
   Times-Roman-ISO   Times-Roman-ISO   Times-Roman
Execution stack:
   %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   --nostringval--   false   1   %stopped_push   1905   1   3   %oparray_pop   1904   1   3   %oparray_pop   1888   1   3   %oparray_pop   1771   1   3   %oparray_pop   --nostringval--   %errorexec_pop   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   1863   3   3   %oparray_pop
Dictionary stack:
   --dict:1151/1684(ro)(G)--   --dict:0/20(G)--   --dict:72/200(L)--
Current allocation mode is local
Last OS error: 2
Current file position is 263
GPL Ghostscript 8.61: Unrecoverable error, exit code 1
Status: 200
Expires: Fri, 24 Jul 2009 18:43:05 GMT
Date: Fri, 24 Jul 2009 18:43:06 GMT
Pragma: no-cache
Cache-control: no-cache
Content-Type: image/png

(以下略:PNG画像が出来ているようです)

eorzea@s345:~> rm -i ./public_html/mt/mt-comments.cgid
rm: remove regular file `./public_html/mt/mt-comments.cgid'? y

スクリプトの変更(解決)

結局、半ば禁じ手ですが、CORESERVERでMovableType4のCaptchaを使うを参考にして、MTコアである/lib/MT/Util/Captcha.pmの187-188行目(Movable Type Pro 4.261)をいじることにしました。

    # my $im = $imbase->Montage(geometry => $geometry_str,
    #                           tile     => $tile_geom);
    my $im = $imbase->Append(stack => '');

Image::Magick自体は私は使ったことのないモジュールなので、今はカプセル化の美名の下にブラックボックスとして「おまじない」を使うことにします。怖いのが、バージョンアップ時の対応漏れですので、バージョンアップ時チェックリストのようなものに追加しておこうと思います。

XREAでの稼働報告がいくつもあることから、上記の通り/virtual/eorzea/public_html/mt/へのシンボリックリンクを/virtual/eorzea/public_html/blog.eorzea.asia/mt/から張っていることが原因の一つのように思えますが、まああまり本筋から離れたところで時間を費やすのも問題なので、この対策でしばらく行ってみようと思います。

コメントする

筆者"Gardejo"について

  • Twitter: @gardejo
  • GitHub: gardejo
  • CodeRepos: gardejo
  • CPAN: MORIYA

このサイトについて

Eorzea System Worksは、架空のシステム開発結社です。

FF14.name (FinalFantasyXIV.name)では、アヴァター(プレイヤーキャラクター)の管理システムやイベント出欠・リマインダシステムや、リンクシェル(LS)運営・管理システムやDKPシステムなどを設計・開発・公開する予定です。

関連サイト

関連サイトでは、他にもFF14に関連するサイトをいくつか紹介しています。

リンク, トラックバック歓迎

このブログへのリンク(どのページでも構いません)やトラックバックを歓迎します。

設計・開発・運用の参考にさせていただきますので、コメントもお気軽にお寄せください!

個別の記事に対するご意見などのほか、目安箱もご用意しています。

このブログ記事について

このページは、Gardejoが2009年7月25日 03:06に書いたブログ記事です。

ひとつ前のブログ記事は「フォームバリデーターの嬉しいおまけ(使用パラメーターの限定)」です。

次のブログ記事は「Arkによるリンク集サンプルアプリケーション(1) 企画~要件定義編」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

2014年2月

            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28  

やや真面目なサイト