少し前に読者の方から「コメント欄が機能していない」と連絡を頂いていたのですが、自分でテストしてみたら正常に書き込めていたので何だろうと思っていました。
ところが立て続けに同様のコメントを頂いたのでログアウトして試したところ、確かにエラーメッセージが出ます。
どうやらWordPressのセキュリティ用に入れてるプラグイン「SI CAPTCHA Anti-Spam」が問題のようでした。
Unreadable CAPTCHA token fileエラー
出てきたエラーメッセージは以下の通りです。
Unreadable CAPTCHA token file
メインサイトである おち研の構成は変えてないんですけど、いつの間にかエラーが出るようになったみたいです。最近マルチサイト化したので、そのはずみに設定ファイルが読めなくなってたのかも知れません。
このSI CAPTCHA Anti-Spamの設定ファイルは推奨パーミッションが755ということになってるのですが、ホストによっては777じゃないと動かないこともアナウンスされています。
「ディレクトリに書き込めません」エラー
以前、導入時に「ディレクトリに書き込めません」というエラーが出たことがあって、その時もパーミッション設定が問題でした。
次のディレクトリに関する問題があります: /captcha/cache/. ディレクトリに書き込めません (ファイルパーミッションの変更). パーミッションは: 0755 パーミッションを0755以上に設定してください (例:ホストによっては0777にする必要がありますが、それでは動かない場合があるので、まずは0755でお試しください) Fixing the actual problem is recommended, but you can check this setting on the SI CAPTCHA options page: “Use PHP sessions” and the captcha will work (if PHP sessions are supported by your web host).
エラー対処例
キャッシュのパーミッション設定を変えてみる
ものは試しにキャッシュディレクトリの設定を777に変えてみることにしました。
wp-content/plugins/si-capcha-for-wordpress/
「SI CAPTCHA Anti-Spam」プラグインフォルダの中に captcha というディレクトリがあります。その下にさらに cache というディレクトリ(/captcha/cache/)を探して下さい。
ここのパーミッションを777に変更したら無事書き込めるようになりました。
Captchaコードのリロード
【本章追記:2016/06/26】再び書き込めないというコメントをTwitter経由で頂きました。
うちからだとゲスト扱いでも書き込めるし、その後いくつかコメントを受け取っていたので問題はクリアされたと思ってました。でも、この条件でエラーになると言うことは、キャッシュが悪さをしている気がします。
いま通常運転での同時接続者数が30~50人くらいなので、キャッシュを切るという選択は考えられません。
コメント機能をJavaScriptで呼び出すタイプに変えれば良いのでしょうが、とりあえずCaptchaコードをリロードして書き込んで貰うというダサい手段で乗りきりたいと思います。
…ということで、コメント欄に注意書きを足しておきましょう。
【 comments.php 】
wp_enqueue_script( "comment-reply" );
$args = array(
'comment_notes_before' => 'エラーが出たら違うCaptchaコードもお試し下さい',
);
comment_form($args);
しばらくこれで様子を見てみます。同様の事例で困ってる方はご参考まで。
コメントをどうぞ(´ω`*)