PHP5.3.8で起きたコンタクトフォームのエラー
今回起きたエラーは、コンタクトフォームが突然使えなくなるというエラーでした。参考サイトではPHP5.3.4以降で起きると書いてあります。今回僕が使ったPHPは5.3.8だったため、同じようなエラーが起きる方はいるかもしれません。今回Webクリエイターズボックスさんがエラーの詳細と参考サイトを教えてくれました。ありがとうございます。
参考サイト
PHP5.3開発情報のほうに全て答えも対策も載っています。
コンタクトフォームが使えなくなる
突然コンタクトフォームが使えなくなります。プラグインのため、有効化するとエラーがでるというものになります。PHP5.2などの環境では使えても5.3.4以降にすると使えなくなるということです。Apacheのエラーログを見ると以下のようにでるそうです。
[error] [client 接続クライアントIP] PHP Warning: preg_replace( ) [function.preg-replace]: Compilation failed: unknown option bit(s) set at offset 0 in /wordpress設定の絶対パス/wp-includes/shortcodes.php on line 228, referer: http://WordprssのURL/?page_id=??
原因:PHP5.3.4以降のpcreライブラリの互換性の問題
平たく言えば、pcreというライブラリのバージョンが古いから新しいのにしてねということです。このライブラリのバージョンはphpinfoで調べることができます。pcreは8.11以降なら問題なく動作するようです。
pcreのアップデート
普通にyum updateを使ってもいいのですが、Apacheなどでお世話になっているwing リポジトリさんのサイトで確認をして、pcreが8.20であったのでそれにしたいと思います。
# yum --enablerepo=wing update pcre # /etc/init.d/httpd restart
アップデートをしたらApacheを再起動します。
phpinfoで確認
再起動が終わったらphpinfoで確認してみてください。pcreのバージョンが8.20になっていれば完了です。
備考
今回のエラーはPHP5.3.8で起きました。logwでPHPアップデートしたときはそれ以前だったため、そのときはこのエラーは起きておりませんでした。5.3.4以降をつかっていてエラーがでている方は実施してみてください。共用サーバーならおそらくおきないかもしれません。起きているさいはサーバー会社に連絡をして対処してもらう必要性があります。
個人支援・寄付について
サイトラボでは個人支援・寄付を受けております。ご協力いただける方はお願いいたします。当サイトではビットコインで受け付けております。
- ビットコイン:3LHnADwZwUbic2L45EnVJEykiG6KfbqrwS