無料XREAでSI Captchaが動作しない?
無料XREAを本格的に利用しようと、様々なプラグインをインストールし始めました。
インストールをはじめるといくつかのプラグインが、正常に動作しないことが判明。
いくつかのプラグインは、画像キャプチャー関連で、例えば、有名なSI Captchaなどです。
どうもphpのGDが正しく動作していないのではないか・・・と思い、調べてみると、GDはちゃんと動いていた。 orz
何が悪いのか・・・・、更に調べて行くと、phpのGDは、無料版XREAでは、phpモジュール版で動作しないらしい。(広告による影響?らしいのだが、ちょっと、理解できていないので説明は省きます。 )
つまりは、phpをCGI版で動作させれば良いらしいので、早速、やってみました。
まずは、.htaccessでphpをcgi版で動作させる
XREAでは、phpのモジュール版とcgi版は、.htaccessで簡単に切り替えできるらしいです。
.htaccessに以下の1行を追加するとcgi版で動作するとのことで、早速、やってみました。
AddHandler application/x-httpd-phpcgi .php |
これを設定すると、.htaccessを設置したディレクトリの配下が、全てCGI版で動作します。
個別に設定したい場合は、以下のように設定すればOKです。
以下の例は、”async-upload.php”というファイルのみCGI版で動作させるということです。
<files async-upload.php> AddHandler application/x-httpd-phpcgi .php </files> |
今回は、Wordpress全体をCGI版で動作させるようにします。
(いろいろと試した結果、これが、一番間違いなかったので、その手順について記述しておきます。)
まず、Wordpressをインストールしたルートディレクトリに.htaccessファイルがあると思います。
そのファイルの先頭に、CGI版で動作するように、以下の1行を追加します。
AddHandler application/x-httpd-phpcgi .php |
これで、CGI版で動作するようになったはずなので、phpinfo() を表示して確認しておきましょう。
以下のようにServer APIがCGIになっていればOKです。
とりあえず、これで、phpのGDは動作するはずです。
SI Captchaでテストしてみましょう。
SI Captchaでは、以下のSI Captcha管理画面からテストできます。赤四角の部分をクリックするとテストページが開きます。
おおーーっ、以下がテスト結果です。
なにやら、画面トップには、phpのエラー情報が・・・。
orz。
Warning: session_start() [function.session-start]: open(/tmp/sess_fvn1o0lrhgr8p2eqd7mbf8fai7, O_RDWR) failed: Permission denied (13) in /virtual/xxxxx/public_html/wp-content/plugins/si-captcha-for-wordpress/captcha-secureimage/test/index.php on line 18 Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /virtual/xxxxx/public_html/wp-content/plugins/si-captcha-for-wordpress/captcha-secureimage/test/index.php:18) in /virtual/xxxxx/public_html/wp-content/plugins/si-captcha-for-wordpress/captcha-secureimage/test/index.php on line 18 |
冷静によく見るとphpの警告文が表示されていて、なんでもパーミッション規制でセッション情報を書き込めなかった・・・ということらしいです。
セッション情報を書き込めるようにする
先ほどのセッション情報を書き込めなかったところをよくよくみると、/tmp/ というディレクトリに書き込もうとしてNGだったらしいことが分かります。
それは、NGでしょ。/tmpは、共有サーバーでは、各ユーザが使えるディレクトリではありませんからね。共有サーバーの場合は、あくまで自分ディレクトリ配下がすべてですから、そちらを使うようにしなければなりません。
さあ、これを調べてみると、以下のような説明がでてきました。
XREAでは、.htaccessファイルでphpの動作パラメータ(一般的には、php.iniで設定する情報)を設定できるらしいです。
php_value session.save_path "/virtual/xxxxx/temp/session/" |
session.save_pathが、通常は、php.iniで設定されるパラメータで、セッション情報を保存するディレクトリパスを指定します。
/virtual/xxxxx/temp/session/ のディレクトリは、自分でmkdirで作成すれば良いです。
念のため、誰でも書き込めるようにしておきましょ。
再度、SI Captchaをテストしてみます。
これは、NGでした。 orz。
むーーー、ひょっとして各ディレクトリに.htaccessファイルを設置する必要があるかもしれないと思い、ファイルをコピーしてみました。しかし、結果は同じでした。
どうも、この設定の仕方は、古い?のか、できないのか?ちょっとわかりませんが、別の手段として、php.iniを各ディレクトリに設定できるらしいので、それで試してみました。
php.iniの中身は、以下のような感じです。
これは、SI Captchaのディレクトリ(/wp-content/plugins/si-captcha-for-wordpress/)に設置します。これは、必要なディレクトリ全てに設置する必要があります。
- /wp-content/plugins/si-captcha-for-wordpress
- /wp-content/plugins/si-captcha-for-wordpress/captcha-secureimage
- /wp-content/plugins/si-captcha-for-wordpress/captcha-secureimage/test
[Session] session.save_path = "/virtual/xxxxx/temp/session/" |
再々再度、SI Captchaをテストしてみます。
おおーーーっ、画面中ほどにニコチャンマークのような絵が表示されればOKです。
ようやくでました。
これが、いやな方は、有料のレンタルサーバーをどうぞ。