PHPは、Web上で最も人気のあるスクリプト言語の一つです。W3Techsによると、PHPはサーバー側のプログラミング言語を使用するすべてのウェブサイトの78%以上で使用されています。つまり、閲覧するウェブサイトのほぼ8割りがPHPを利用しています。PHPが死んでいるとは言えないことに違いありません。もちろん、WordPress全体がPHP上に構築されており、PHPがWordPressのエコシステムにつながっているため、非常に重要な役割を果たしています。

最近直面しているジレンマは、多くのビジネス、開発者、そしてホスティング会社が最新のPHPバージョンのサポートが遅れているということです。下記の分析データの中には驚くべき内容が多いです。今日は、セキュリティ上の理由だけでなく、パフォーマンスを改善しサポートを向上させるためにも、PHPの最新版を使用することが非常に重要である理由をいくつか説明します。

PHPの旧バージョン

どのソフトウェアもそうですが、PHPにも継続的改善ができるようにリリースライフサイクルがあります。PHPの各メジャーリリースは通常、リリース後2年間は完全にサポートされています。その間、バグやセキュリティ問題は定期的に修正されます。

WordPressのPHPのサポートされているバージョン

WordPressのPHPのサポートされているバージョン

HP 5.6とPHP 7.0のサポート終了

2018年12月3日にPHP 7.0はサポート終了となりました。つまり、セキュリティサポートがなくなり、修正されていないセキュリティの脆弱性にさらされるようになりました。次に2018年12月31日にPHP 5.6もサポート終了となりました。これで5.0が14年前にリリースされたPHP 5の時代が終わりました。

WordPressの正式分析ページによると、本稿執筆の時点では、WordPressユーザーの57%以上がまだPHPの5.6以下のバージョンを使用しています。これをPHP 7.0と組み合わせると、ユーザーの77.5%が2019年1月以降にサポートされていないPHPバージョンを使用しています。

WordPress以外のウェブサイトのデータも確認すると、さらに恐ろしい結果となります。W3Techsによると、PHP5はPHPを使用するすべてのウェブサイトの73.1%に使用されています

77.5% of WordPress users are currently using PHP versions that are no longer supported! 😮 Click to Tweet

これはセキュリティの観点からだけでなく、PHP 7のパフォーマンス強化を利用していないWordPressウェブサイトが多いからも悪いことです。

WordPressのPHPバージョンの分析デー

WordPressのPHPバージョンの分析データ

新しいバージョンの採用が遅い理由について

新しいバージョンが早く採用されない主な理由は次のとおりです。

  • Kinstaの新しいお客様の場合よく目にする最大の理由は、事業主が自分のPHPバージョンを知らない、または気にしていないことです。もちろんこれは場合により理解できます。誰もがこれを知っているわけではありません。 この責任は開発者、代理店、またはホスティング会社が負う場合が多いです。
  • 開発者がPHPの最新版をサポートするようにコードを更新するには時間がかかります。これには、ウェブサイト、テーマ、プラグインなどが含まれます。
  • コードを更新するのに時間がかかるだけでなく、互換性を保証するために徹底的な試験も必要になります。WordPressリポジトリにだけ49,000以上のプラグインがあります!
  • WordPressホスティング会社の中にはPHPの最新版を利用可能にしたくない会社も多いです。なぜなら、更新のせいでお客様のウェブサイトが破壊した場合に、サポートチケットの数が増えるからです。当社もWordPressホスティング会社である為、よく理解できますが、実績から言うと傾向は逆です。サポートチケットの問題の多くは、PHPの旧バージョンにより引き起こされた問題です。
  • 開発者は更新しようとしても、更新にリソースを費やしたくないサードパーティ製のアプリケーションのせいでどうしようもなく困っている場合もあります。

しかし、古くて、サポートされていない、WordPressウェブサイトを遅くするPHPバージョンを使用することはこれでもあり得ないことです。一方、ある程度の進捗が確認できています。 Private Packagistの共同創設者であるJordi Boggianoは、毎年PHP使用についての分析データのレポートを作成しています。以下のグラフで分かるように、ある程度の進捗があります。データーはもちろんComposerインストールのほんの一部のサンプルですが、それでも興味深いいです。

PHP使用の分析

PHP使用の分析(作成:Jordi Boggiano)

PHPのバージョンを更新する理由について

以下の理由を確認し、更新未実施の場合は必ず更新することをご検討ください。

1. セキュリティ

PHPを更新する最も重要な理由の一つは、完全にサポートされ、セキュリティの脆弱性が定期的に修正されているバージョンを使用することです。PHP 5.4は2015年以降、PHP 5.5は2016年以降修正されていません。ただし、オペレーティングシステムベンダーの中には、自分が提供するPHPの旧バージョンを更新しているベンダーもあります。

CVE Detailsによると、2016年にはPHPのセキュリティ脆弱性は100件以上も報告され、現在までの最悪の年の一つでした。これらには、DoS、コード実行、オーバーフロー、メモリ破損、XSS、ディレクトリトラバーサル、バイパス、および情報の取得などが含まれます。2017年は2000年以来の3番目に悪い年で、40件以上の脆弱性がありました。

年別のPHPセキュリティ脆弱性

年別のPHPセキュリティ脆弱性

PHP自信も「最新版を維持する」ことについて次のとおり述べています:

PHP は、他の大規模なシステムと同様に、セキュリティを確保しつつ 改良されています。新バージョンにはしばしば大規模あるいは小規模な 変更が含まれています。その内容は、セキュリティの機能追加であったり セキュリティ上の問題・設定の不備・その他システム全体のセキュリティや 安定性にかかわる問題の修正であったりします。他のシステムレベルのスクリプト言語やプログラムと同様に、最善の アプローチは、頻繁に更新し、最新のバージョンとその変更を 注視し続けることです。PHP、最新版を維持する

2. パフォーマンス

PHP 7.2PHP 7.3のリリースにより、パフォーマンスが大幅に改善しました。影響度は非常に大きい為、WordPressウェブサイトのその他の細かい最適化よりも優先すべきです。以下のベンチマークはPHP 7のこれまでのバージョンに対する大幅なパフォーマンス向上を示しています。PHP 7をPHP 5.6と比較するとレイテンシがほぼ半分で、1秒あたり2倍のリクエストが実行されることが分かります。

php5.6対php7

PHP Fluent TalkのRasmus LerdorfのPHPベンチマーク

当社も独自のPHPベンチマークを作成しました。上記のベンチマークと同様に、PHP 7.3ではPHP 5.6と比較して1秒間に約3倍のトランザクション(リクエスト)が実行できることがわかりました。PHP 7.3はまたPHP 7.2よりも平均9%高速です。

WordPress 5.0のPHPベンチマーク

WordPress 5.0のPHPベンチマーク

  • WordPress 5.0 PHP 5.6のベンチマーク結果:91.64リクエスト/秒
  • WordPress 5.0 PHP 7.0のベンチマーク結果:206.71リクエスト/秒
  • WordPress 5.0 PHP 7.1のベンチマーク結果:210.98リクエスト/秒
  • WordPress 5.0 PHP 7.2のベンチマーク結果:229.18リクエスト/秒
  • WordPress 5.0 PHP 7.3のベンチマーク結果:253.20リクエスト/秒🏆

Christian VighもPHPのパフォーマンス比較を公開し、PHP 5.2がPHP 7よりも400%遅いことが判明しました。

純粋なCPUベンチマーク結果の比較

純粋なCPUベンチマーク結果の比較

3. サポート

サポートも、PHP最新版を使用する理由の一つです。プラグインとテーマの開発者は、旧バージョンのサポートを拡張するだけの場合が多いです。理由は時間的制約と、互換性を試験する時間がないことです。 古いバージョンを使用すると、ウェブサイトがどうしても破壊するでしょう。WordPressのフォーラムでその実例が多いです。古いPHPバージョンと、そのバージョンの特定の関数の処理方法のせいで発生するエラーは例えば次のものがあります:

Parse error: syntax error, unexpected '' (T_VARIABLE), expecting function (T_FUNCTION) in /pub/file.php on line xxx

WordPressフォーラムで「予期しないT_Function」を検索すると、2,000以上のスレッドが返され、その中に過去数日以内のものが多いです。以下はPHPの古いバージョンを実行しているせいで発生した最近の例です:

これらのスレッドの多くは、PHPの古いバージョンを使用しているために開かれています。しかし、PHP 7との互換性の問題のために開かれているスレッドもそうです。これで、WordPress開発コミュニティがまだ新しいPHPバージョンに追いついていないことが分かります。

4. 開発者向けの新機能

PHP 5.2と比較するとPHP 7.3には新機能が多数追加された為、WordPress開発者の多くは、可能であればPHPのより新しいバージョンを使用したがっているでしょう。PHP 7および7.3での変更点は次のとおりです:

  • 複合比較演算子
  • NULL合体演算子
  • 新型ヒンティング
  • 匿名クラス
  • null許容タイプ
  • Iterable返し、void返し
  • マルチキャッチ例外処理
  • リストで使用可能なキー
  • ネガティブな文字列オフセットの数の増加
  • 数値演算子と不正な番号
  • HTTP/2サーバープッシュ

古いバージョンのものをサポートするのは楽しいことではありません。残念なことに、多くの開発者は、広範囲のバージョンをサポートしなければなりません。

ご利用のホスティング会社がPHPの最新版をサポートしているか確認する

時間がかかりましたが、WordPress.org requirementsの要件はPHP7以上を推奨するようになりました。

Yoastはつい最近、「ご利用のホスティング会社を改善しよう」という素晴らしい記事を発表しました。この記事では、Joost de Valkは「本当の問題はホスティング会社が新しいバージョンを採用していないことまたは採用してもお客様をアップグレードするように促さないことである」と説明しています。そこでYoastが登場します。Yoast SEO 4.5以降、PHP 5.2を使用しているウェブサイトのWordPressダッシュボードに通知が表示されるようになります。 この通知は大きく、醜く、見逃せることのできないものになるようです。

PHP 7 is the future (and boy is it nice and fast).🚀 -- Joost de Valk via @yoast @kinsta Click to Tweet

素晴らしい対策です!Kinstaは、PHP 7.2も7.3も安定版リリース以来サポートしています。

実は、Kinstaの新しいWordPressインストールのデフォルト設定はPHP 7.3です。そしてPHP 5.6が当社の環境で許される最小バージョンです。注:PHP 5.6と7.0のは近いうちにサポート終了する予定です。 PHPのサポートされていないバージョンを使用しているWordPressウェブサイトを一切ホスティングしませんので、ご注意ください。パフォーマンス向上のため、お客様に7.3を使用することを推進してします。

ご利用のWordPressホスティング会社がPHPの新しいバージョンをなかなかリリースしないのであれば、新しいホスティング会社を探すことを強くお勧めします。Kinstaまでお気軽にお問い合わせください。

現在のPHPのバージョンを確認する

ご利用のPHPバージョンがご存じでない方は下記の手順をご確認ください。

1. Pingdomを使用してPHPのバージョンを確認する

ご利用のPHPバージョンを確認する最もしやすい方法の一つは、Pingdom及びGoogle Chrome Devtoolsなどのツールを使用することです。最初のHTTPリクエストヘッダにはバージョンが表示されているはずです。

Pingdomを使用してPHPのバージョンを確認する

Pingdomを使用してPHPのバージョンを確認する

結果が出るかは、ホスティング会社がX-Powered-Byヘッダーの値を変更していないことによります。セキュリティ上の懸念から、これを取り除く会社もあります。ヘッダーが取り除かれた場合には、PHPのバージョンが表示されないことがあります。その場合には以下の2番目の手順に従ってください。または、ホスティング会社に質問することもできます。

2. ファイルを使用してPHPのバージョンを確認する

ご利用のサーバーにFTP経由でファイルをアップロードすることによりもPHPバージョンを確認することができます。

ステップ1

phpinfo.phpという名前の空のファイルを作成します。ファイルに次の内容を貼り付けます:

<?php
echo 'Current PHP version: ' . phpversion();
?>

ステップ2

WordPressウェブサイトのルートにファイルをアップロードします。

phpinfo.phpファイルをアップロードする

phpinfo.phpファイルをアップロードする

ステップ3

次にファイルの場所であるdomain.com/phpinfo.phpにアクセスします。そこで現在のPHPバージョンの情報が表示されます。

PHPのバージョンをブラウザで確認する

PHPのバージョンをブラウザで確認する

情報技術に精通していない方または予算が限られている方ができる対策

古いプラグイン及びテーマ等のせいで、新しいPHPバージョンと互換性のないWordPressウェブサイトは多いです。技術に精通していないユーザー、または予算の限られているユーザーの中には、どうすれば良いか悩んでいる方も多いでしょう。Kinstaに移行するお客様の中にも利用中のPHPバージョンがEOLに達しているお客様も少なくありません。

当社の推進事項は以下のとおりです:

  1. 当たり前のことかもしれませんが、ご利用のプラグインとテーマは最新バージョンでないと、更新してください。
  2. プラグインまたはテーマの開発者に連絡し、PHP 7.2または7.3(またはアップデートしようとしているバージョン)のサポートを追加するように依頼します。当社ではあるPHPバージョンのサポートを終了する前に、お客様に連絡します。事前の連絡は、開発者を雇うための予算のないお客様にとって特に重要です。
  3. 同じ機能を提供し、該当のPHPバージョンと互換性のある代替プラグインを探します。WordPressレポジトリには数千ものプレミアムプラグインおよびテーマがあるおかげで、どの用途であっても代替品が必ずあるはずです。
  4. 予算がある場合には、WordPressの開発者を採用し、異常を処理してもらう手もあります。

PHPを更新する方法について

更新の準備が整ったら、まず最初にウェブサイトの互換性試験を行います。WordPressウェブサイトをローカルでテストすることもできますが、本番サイトにより近いものであるステージング環境を利用することもできます。安全第一です!

Kinstaのお客様には、ワンクリックでステージング環境をご利用いただけます。ダッシュボードでPHPのバージョンを切り替え、試験を始めましょう。

WordPressのステージング環境

WordPressのステージング環境

また、古いバージョンのPHPからのバージョンアップの場合には、WordPressのインストールもバージョンアップするようにご注意ださい。2年前のWordPressを最新版のPHPと組み合わせると結果が良くないでしょう。ウェブサイトの試験ができて、PHPを更新する準備が整ったら、以下のリソースもご参照いただけます。

KinstaでPHPを更新する

Kinstaのお客様には、該当のサイトをクリックして「ツール」にアクセスし、ご希望のPHPエンジンを選択するだけでPHPのバージョンを切り替えていただけます。PHP 5.6、7.0、7.1、7.2、および7.3が利用可能です。注:PHP 5.6と7.0のは近いうちにサポート終了する予定です。

PHPバージョン間の切り替え

PHPバージョン間の切り替え

cPanelでPHPを更新する

ご利用のホスティング会社がcPanelを使用している場合、おそらくPHPのバージョンの切り替えが利用可能です。cPanelにログインし、「ソフトウェア」カテゴリにある「PHPバージョンの選択」をクリックします。

cPanelにてのPHPバージョンの選択

cPanelにてのPHPバージョンの選択

ご利用のホスティング会社がサポートしているPHPバージョンのいずれか選択できます。

cPanelでのPHP 7

cPanelでのPHP 7

PHPの切り替えをサーバー上で手動で実施する

手順はオペレーティングシステムにより異なる為、独自のサーバを管理している方は必ず、公式のPHPインストールドキュメントを確認してください。関数、クラス、ラッパー、拡張機能、モジュールなどの変更点に注意しなければなりません。移行ガイドは例えば次のものがあります:

まとめ

今こそはPHP 7.3へのバージョンアップの時間です。サポートされているソフトウェアの使用のメリットだけでなく、パフォーマンス上のメリットも必ずあります。 ご利用のWordPressホスティング会社がまだPHP 7.3をサポートしていない場合は、新しいホスティング会社の利用を検討することを強くお勧めします。テーマ及びプラグインも同様です。開発者がまだパッチをリリースしていない場合は、代替手段を検討した方が良いでしょう。

あなたもPHP 7に切り替えたのでしょうか?その経験について、是非教えてください。切り替えはしやすかったですか?それともまだサードパーティ待ちですか?ご意見をお寄せください。

50
シェア