ホームページ用のサーバに「さくらインターネットのレンタルサーバ」を利用している場合、PHPのバージョンについての案内が来ている。内容は「PHPのバージョンが古い場合は強制的に7月3日に最新の7.3にアップデートする」ということである。PHPの最新版は5月末に発表された7.3.6で、セキュリティに関する多数のバグ修正がされているらしい。深刻な問題をはらんでいる可能性もあることから、早めに対応しよう。
PHPバージョン
ワードプレスに影響が大きいのはPHPのバージョン
PHPのバージョン変更により想定される問題は、現在使用しているプログラムに不具合を起こすことである。とくにWordPressで運営しているサイトは今のうちにチェックしておこう。
▼さくらインターネットの管理画面でPHPバージョンを確認する
上記の場合は、最新のPHP7.3.6になっているのでOKである。
PHP7.3でWordPressが稼働するかどうかのチェック
もし、現状のPHPバージョンが、5.x.xや4.x.xなど、7でない場合はとても問題が多い。そもそもPHP5未満だとサポート期限が昨年末で切れている。すぐにでもPHP7.3にアップデートする必要がある。
しかし、WordPressはテーマのカスタマイズや多数のプラグイン、さらには自由なカスタマイズにより、スムーズにPHPのアップデートができない可能性がある。その場合は、原因となっているテーマやプラグインを変更したり修正したりしなければならない。
そんなときに便利なプラグインが「PHP Compatibility Checker」である。
「PHP Compatibility Checker」をWordPressにインストールして使うと、現在使用しているプラグインやテーマがPHP7.xにアップデートした場合に不具合を起こす可能性をチェックしてくれるのである。また不具合を起こす可能性を指摘してくれる。
あるWEBサイトで実際に不具合がでた場合の修復にも役に立ったことがある。
▼実際の警告表示
■テーマのエラー
FILE: /home/**********/www/wp/wp-content/themes/sting********/functions.php
——————————————-
FOUND 4 ERRORS AFFECTING 2 LINES
——————————————-
215 | ERROR | Function ereg() is deprecated since PHP 5.3 and removed since PHP 7.0; Use preg_match() instead
215 | ERROR | Extension ‘ereg’ is deprecated since PHP 5.3 and removed since PHP 7.0; Use pcre instead
218 | ERROR | Function ereg() is deprecated since PHP 5.3 and removed since PHP 7.0; Use preg_match() instead
218 | ERROR | Extension ‘ereg’ is deprecated since PHP 5.3 and removed since PHP 7.0; Use pcre instead
——————————————-■Biz Calendarの警告
FILE: /home/**********/www/wp/wp-content/plugins/biz-calendar/biz-calendar.php
——————————————-
FOUND 0 ERRORS AND 1 WARNING AFFECTING 1 LINE
——————————————-
73 | WARNING | Function create_function() is deprecated since PHP 7.2; Use an anonymous function instead
——————————————-■a3 Lazy Loadの警告
FILE: /home/**********/www/wp/wp-content/plugins/a3-lazy-load/admin/admin-interface.php
——————————————-
FOUND 0 ERRORS AND 2 WARNINGS AFFECTING 2 LINES
——————————————-
432 | WARNING | Global with anything other than bare variables is discouraged since PHP 7.0. Found ${$option_name}
471 | WARNING | Global with anything other than bare variables is discouraged since PHP 7.0. Found ${$id_attribute}
——————————————-
上記の場合、PHP7.3を実行すると画面が真っ白になってしまった。プラグインのほうは最新版にアップデートするか、いっそ削除してしまうということで回避できる。問題はテーマだった。
このテーマは外注デザイナーに制作してもらったものであり、そのデザイナーとは現在うまく連絡がとれないため、自力で修正するか、いっそ無料の汎用テンプレートにしてしまうしかない。
ダメ元でチャレンジ
ダメ元でチャレンジした修正がうまくいった。
「ereg」という関数がPHP7.3では機能しないので、その部分だけを変更した。
PHP5.3以降で「Deprecated(非推奨)」となっている「ereg」関数を「preg_match」関数に変更してエラーを消す方法
https://www.imamura.biz/blog/19465
に解説があるので、そのとおりにした。
「ereg」を使わず「preg_match」を使う
では早速~。例えば下のような使い方をしている場合です。
if ( ereg(“\.php$”, $file) ) {
「preg_match」を使うと、
if ( preg_match(“/\.php$/”, $file) ) {
という感じです。やっていることは単純で「ereg」を「preg_match」に変更して、正規表現の記述「\.php$」をデリミタ「/」などで囲めばOKです。
問題を起こしているテーマ内のfunctions.phpをエディタで開き、「ereg」と一致する箇所を確認し、「preg_match」に置き換え、前後の記述をチェックし、更新。この処置だけで無事にWordPressが稼働できた。
以下、注意事項はさくらインターネットから引用した。
<注意事項>動作不良等がなければ「モジュール版」の利用をおすすめします。PHPの実行パフォーマンスが大幅に改善されます。PHPバージョン変更の動作確認にはバックアップ&ステージング機能が便利です。ステージングの作成方法はサポートサイトをご確認ください。旧バージョンを使用する特別な事情がなければ最新バージョンをご利用ください。
旧バージョンの利用はリスクを伴います。当面は並行提供しますが、公式でのサポートが終了しているため自己責任でご利用ください。
また、提供を終了する場合がございます。PHP開発チームによるPHP 5.6 、5.4 、5.3 、5.2 、4.4 のサポートは終了しています。(詳細)
セキュリティの観点からも極力、最新バージョンをご利用ください。
PHP公式サイトのバージョン移行ガイド
PHP: 付録 - ManualPHP7以外でモジュールモードはご利用になれません。
この記事を書いた遠田幹雄は中小企業診断士です
遠田幹雄は経営コンサルティング企業の株式会社ドモドモコーポレーション代表取締役。石川県かほく市に本社があり金沢市を中心とした北陸三県を主な活動エリアとする経営コンサルタントです。
小規模事業者や中小企業を対象として、経営戦略立案とその後の実行支援、商品開発、販路拡大、マーケティング、ブランド構築等に係る総合的なコンサルティング活動を展開しています。実際にはWEBマーケティングやIT系のご依頼が多いです。
民民での直接契約を中心としていますが、商工三団体などの支援機関が主催するセミナー講師を年間数十回担当したり、支援機関の専門家派遣や中小企業基盤整備機構の経営窓口相談に対応したりもしています。
保有資格:中小企業診断士、情報処理技術者など
会社概要およびプロフィールは株式会社ドモドモコーポレーションの会社案内にて紹介していますので興味ある方はご覧ください。
お問い合わせは電話ではなくお問い合わせフォームからメールにておねがいします。新規の電話番号からの電話は受信しないことにしていますのでご了承ください。
【反応していただけると喜びます(笑)】
記事内容が役にたったとか共感したとかで、なにか反応をしたいという場合はTwitterやフェイスブックなどのSNSで反応いただけるとうれしいです。
遠田幹雄が利用しているSNSは以下のとおりです。
facebook https://www.facebook.com/tohdamikio
ツイッター https://twitter.com/tohdamikio
LINE https://lin.ee/igN7saM
チャットワーク https://www.chatwork.com/tohda
また、投げ銭システムも用意しましたのでお気持ちがあればクレジット決済などでもお支払いいただけます。
※投げ銭はデジタルコンテンツ購入という通販のしくみにしました。
※投げ銭は100円からOKです。シャレですので笑ってください(笑)