WordPressサイトをSSL化する際には、「Really Simple SSL」のようなSSL対応するプラグインを使ってSSL化を実現することも可能です。
一方、シリアライズ化されたデータまでも含めて、全てのデータベース内のSSL化されていないURLをSSL化させる方法はプラグインに依存せず、DBを書き換えるため安心です。
今回、シリアライズ化されたデータまでも含めてSSL化しようとしたところ、PHPのバージョンが古くデータベースの変更させる方法でエラーが発生したため、解決策をご紹介します。
目次
シリアライズ化されたデータベース内のURLをhttpsに一括置換させてSSL対応を行う
「WordPress SSL」等で検索すると、常時SSLのために、SSL対応プラグイン「Really Simple SSL」を使って対応しましょう、と書かれている記事が上位に表示されています。
このプラグインを使うことで常時SSLへ対応する方法が簡単な一方で、本来SSL化は「http」となっているURLを「https」へ変更することを指すため、WordPressのデータベースに存在する「http」の文言を全て「https」へ置き換えてあげる必要があります。プラグインを使うことでこれらを自動的に変更してくれるのですが、データベースの中身を置き換えているわけではないためプラグインを無効化するとSSL未対応の状態に戻ってしまいます。
何かのミスでプラグインが無効化されてしまうリスクはゼロではないため、できればデータベースを直接置き換えて上げることが望ましいのは言うまでもありません。
そこで以前にもご紹介した、WordPress 公式でも紹介されている「Search and Replace for WordPress Databases Script」です。
このスクリプトを使うことで、シリアライズ化されたデータも含めて安全にデータベース内の文言を「https」から「https」へ一括置換することができます。
具体的な置換方法は以前の記事をご参考ください。
UpdraftPlusを利用したサイト移転(引っ越し)方法 – 株式会社ハイファイブクリエイト
古いPHPだとエラーになるので注意
ただここで注意があります。WordPressを動かしているサーバーで利用しているPHPのバージョンが古いと、このスクリプトがエラーとなってしまいます。
この時に表示されたエラーメッセージは以下です。
Fatal error: Undefined class constant 'MYSQL_ATTR_SSL_KEY' in /path-to-directory/Search-Replace-DB-master/srdb.class.php on line 540
ちなみに、PHPのバージョンは5.3系でした。
PHP 5.4以降かつ7.2以下だと非推奨ではあるが利用は可能
試しに、PHP5.4系に更新してみたところ、画面は表示できました。ただし、PHP7.3以上に更新が推奨というメッセージ。動作保証はないものの利用はできるようです。
PHP 7.0系で無事成功
今回の環境はPHP5.3系だったため、一時的に7.0系まで引き上げてスクリプトを実施しました。いくつか注意勧告系のエラーメッセージは表示されるものの、無事一括置換は正しく成功しました。
PHPのバージョンを引き上げたことでWordPress側に不具合やエラーが発生するかもしれません。もしエラー等が発生する場合、以前のバージョン(今回の場合は5.3系)に戻し、エラー解消のための対応を行ってからPHPを更新します。
PHPの更新は本来はテストしてからの更新が望ましいです。PHPはできるだけ推奨されている新しいバージョンを使うようにしましょう。
PHP・WordPress本体・プラグイン等は最新版を使う
ちなみに、冒頭に紹介したプラグイン「Really Simple SSL」は対応するPHPバージョンは7.2以降と明記されています。
その他のプラグインもPHP7.4以降、8.0以降となっているのも多く時間が経つにつれて引き上げられる傾向があります。PHPは最新バージョンを使うようにしましょう。
また、WordPress本体や各種プラグインにおいても最新版を使うことが安全な運用に繋がります。「最近WordPress更新していない」という場合は、一度管理画面にログインして更新を行いましょう。その際は必ずバックアップを忘れずに!
コメントを残す