PHPは、現在ウェブ上で最も人気のあるスクリプト言語の1つ。W3Techsによると、PHPは、サーバーサイド言語を使用する77%以上のサイトで使用されています。これは、訪問する10サイトのうち、8件が何らかの形でPHPを使っていることを意味し、PHPが今もなお現役であることを物語ります。そして、WordPressのエコシステムにおいても、CMS全体がPHPで構築されており、非常に重要な役割を担っています。

PHPのバージョンを今すぐ確認するなら、phpinfoページを作成してみてください。

PHPに関する今日の課題は、多くの企業、開発者、そしてサーバーの間で最新バージョンのサポートが徹底されていないことにあります。さらに、これからご紹介する統計情報の中には、あまり知られていない驚きの事実も。この記事では、セキュリティ上の理由に限らず、より良いパフォーマンスとサポートのために、新しいバージョンのPHPを使用することの重要性を詳しくご説明します。

旧バージョンのPHP

他のソフトウェアと同様、PHPにもリリースライフサイクルがあり、これを遵守することで、さらなる進化と改善を繰り返すことができています。PHPの各メジャーリリースは、通常、リリース後の2年間サポートされます。この間、バグやセキュリティの問題が定期的に修正され、パッチが適用されます。

WordPressがサポートするPHPのバージョン
WordPressがサポートするPHPのバージョン

より新しいバージョンのPHPの対応状況も確認することができます。

現在のPHPバージョン対応状況
現在のPHPバージョン対応状況

PHP 5.6、7.0、7.1、7.2、7.3、7.4のサポート終了

バージョンのセキュリティサポート終了(EOL)は、パッチが適用されていないセキュリティ脆弱性にさらされる可能性があることを意味します。各バージョンのサポート終了日は以下のようになっています。

  • PHP 7.4:2022年11月28日
  • PHP 7.3:2021年12月6日
  • PHP 7.2:2020年11月30日
  • PHP 7.1:2019年12月1日
  • PHP 7.0:2018年12月3日
  • PHP 5.6:2018年12月31日(最初のバージョン5系である5.0は14年前にリリース。これで完全にPHP 5系が終了)

公式のWordPress統計情報によると、この記事を執筆時点で、55%以上のWordPressユーザーが未だPHP 7.4以下のバージョンを使用しています。サポートが終了している他のバージョンも加味すると、2022年11月時点でなんと85%ものユーザーがサポートが終了しているバージョンを利用していることになります。

WordPressコミュニティ以外の統計に注目すると、さらに驚きの事実が。W3Techsによると、PHPを使用しているサイトの22.9%で未だPHP 5が使用されています。

これはセキュリティの観点で好ましくないだけでなく、多くのWordPressサイトがPHP 8.2によるパフォーマンス向上の恩恵をまだ受けていないことを意味します。

WordPressのPHPバージョン統計
WordPressのPHPバージョン統計

最新のPHPバージョンの導入が遅れている理由

最新バージョンの採用が遅れているのには、以下のようなさまざまな原因が考えられます。

  • Kinstaに移行したお客様に多い理由として、事業経営者がPHPのバージョンを知らない、または重要性に気づいていない─すべてのユーザーがPHPに精通しているというのは考えにくいため、この理由には納得です。一般的に、この責任は、開発者、Web制作会社、またはサーバーにあります。
  • 最新バージョンのPHPをサポートするコードの更新には手間がかかる─これには、サイト、テーマ、プラグイン開発者にも当てはまります。
  • 場合によっては、時間のかかるコードの更新だけでなく、互換性確認のために大規模なテストが必要になる─WordPressのリポジトリだけでも、4万9,000以上のプラグインがあります。
  • 万が一サイトが破損した場合の対応を恐れ、多くのWordPress特化型サーバーが、PHPのバージョン更新に消極的アプリケーションホスティングデータベースホスティングWordPress専用マネージドホスティングを提供している私たちにとって、これはわからなくもない理由です。しかし、実際にはこの逆で、普段私たちが多く目にするのは、むしろ古いバージョンのPHPが引き起こす問題です。
  • クライアントや他のサードパーティアプリの更新にリソースを費やしたくないために、開発者やWeb制作会社が立ち往生している

とは言え、上記の理由を踏まえても、サポートされていない旧バージョンを使用し続けることの言い訳にはならず、これが原因でWordPressサイトの速度が低下している可能性があります。PHPは現在も大きな市場シェアを占めており、然るべき対処が必要です。

PHPをバージョンアップすべき理由

まだ新しいバージョンのPHPを使用していない方は、以下の理由を踏まえて、バージョンアップを検討してみてください。

1. セキュリティ

まず最も重要な理由は、サポートがあり、セキュリティ脆弱性のパッチが定期的に適用されるバージョンを使用することで、サイトやアプリケーションを安全に実行できるということです。PHP 5.4には2015年以降、PHP 5.5には2016年以降、パッチの適用がありません。ただし、一部のOSベンダーでは、古いバージョンのPHPを搭載し、現在もバージョンアップを行なっています。

CVE Detailsによると、2016年は特にPHPのセキュリティ脆弱性の問題が多く発生した年で、100件以上が報告されました。これには、DoS、コードの実行、オーバーフロー、メモリ破壊、XSS、ディレクトリトラバーサル、バイパス、型情報の取得などが含まれます。2017年も2000年以降3番目に問題の数が多い年で、40件以上の脆弱性が報告されています。

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

常に最新バージョンを使用することについて、PHPは以下のように述べています。

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

併せて、WordPressサイトでPHPメモリ上限を上げる方法についてもご覧ください。

2. パフォーマンス

PHP 7.27.37.4、そして8.0がリリースされたことで、パフォーマンスが大幅に改善されました。8.1では、さらに向上し、最近では8.2がリリースされたばかりです。PHPの新しいバージョンの導入は、WordPressサイトで行うさまざまな最適化よりもはるかに重要であり、優先して行われるべきです。

また、Kinstaでは、独自にPHPベンチマークも実施しています。上記のベンチマークと同様、PHP 8.0と8.1は、旧バージョンよりも1秒あたりのトランザクション(リクエスト)がかなり高速で実行されることがわかりました。

Kinstaでは、PHP 7.4はサポートしていませんが、バージョン7.4, 8.0, 8.1, 8.2, 8.3 , 8.4をお使いいただけます。

WordPress 5.9-RC2のPHPベンチマーク
WordPress 5.9-RC2のPHPベンチマーク

また、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

フォーラムで「unexpected T_Function」と検索すると、2,000件以上のスレッドがヒットします。以下は最近の報告されたもので、いずれもPHPの旧バージョンの使用が原因です。

フォーラムのスレッドの多くでは、古いバージョンのPHPで起こった問題について語られていますが、PHP 7との互換性の問題にかんするスレッドも多数見られます。これは、WordPressの開発者コミュニティが、新しいバージョンのPHPを未だ完全に導入できていないことを示唆しています。

4. 開発者向け新機能

多くのWordPress開発者は、できれば最新バージョンのPHPを導入したいと考えています。というのも、PHP 5.2とPHP 7.4の間には、新機能が数多く追加されているためです。例えば、PHP 7と7.3での変更点には、以下のようなものがあります。

  • 複合比較演算子
  • Null coalesce演算子
  • 追加の型宣言(タイプヒンティング)
  • 無名クラス
  • Null許容型
  • iterabl型とvoid型の戻り値
  • 複数のcatchブロックを使用した例外処理
  • listで使用可能なキー
  • 追加の負の文字列オフセット
  • 数値演算子と不正な数値
  • HTTP/2サーバープッシュ
  • Preload機能
  • 配列式のスプレッド演算子
  • アロー関数 2.0(短いクロージャ)
  • Null合体演算子
  • 型付きプロパティ 2.0
  • 弱参照
  • 共変戻り値と反変パラメーター
  • 新たなカスタムオブジェクトのシリアル化

旧バージョンのサポートにはほとんど意味がないのにもかかわらず、多くの開発者は、このようなバージョンを複数サポートしなければならないというのが実情です。

PHP 8.0には、以下のような機能を筆頭に、さらに多くの新機能が搭載されています。

  • 名前付き引数
  • union型
  • コンストラクタのプロパティ昇格機能
  • カスタムオブジェクトのシリアル化
  • match式
  • null安全オペレータ
  • 型システムおよびエラー処理の改善

そして、すぐこの後にPHP 8.18.2がリリースされており、いずれも新機能、非推奨機能、変更点を含みます。

サーバーで最新バージョンのPHPがサポートされているかを確認する

発表までに時間はかかったものの、WordPress.org の公式要件では、PHP バージョン7.4以上を実行しているサーバーの利用を推奨しています。

Yoast SEOが『Whipping Your Host Into Shape(サーバーの体制を適切に整えるには)』という素晴らしい記事を公開しています。記事の中で、Joost de Valk氏は、真の問題なのは、ホスティング会社が早く採用しないこと、採用していたとしても、ユーザーにバージョンアップを推奨していないことであると指摘しています。これを受け、Yoast SEO 4.5では、PHP 5.2で動作しているWordPressサイトの管理画面に通知が表示されるようになっています。この通知は大きく目立つように表示され、鬱陶しくても消すことができない仕様です。

YoastはKinstaも信頼を寄せる優秀なプラグインです。Kinstaは、安定版のリリースごとにPHPの最新バージョンをサポートしています。

最新情報PHP 8.2(正式リリース)は、Kinstaのすべてのお客様にご利用いただけます。なお、PHP 7.4のサポートは終了しており、現在PHP 7.4, 8.0, 8.1, 8.2, 8.3 , 8.4をサポートしています。

私たちは、業界で最速かつ最も安全な環境をお客様に提供することに専念しています。つまり、すべてのお客様のサイトにセキュリティ更新が定期的に行われている技術を採用することを徹底しています。

WordPressサイトでPHPを変更する方法についてはこちらをご覧ください。

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

自分のWordPressサイトで使用しているPHPのバージョンがわからない場合は、以下のような確認方法があります。

1. PingdomでPHPのバージョンを確認する

PingdomやChromeのデベロッパーツールを使って、簡単にPHPのバージョンを確認することができます。通常、HTTPレスポンスヘッダーに表示されます。PingdomでPHPのバージョンを確認

なお、サーバー側でX-Powered-Byヘッダーの値が変更されていない場合は、このヘッダーでバージョンを確認することができますが、セキュリティ上の懸念から削除されている場合には、確認できない可能性が高いです。以下ご紹介するその他の方法で確認するか、サーバーに直接問い合わせてください。

2. WordPress管理画面でPHPバージョンを確認する

WordPress 5.0以上をお使いの場合は、「サイトヘルス」ツールでPHPバージョンを確認できます。

WordPressの「サイトヘルス」でPHPバージョンを確認
WordPressの「サイトヘルス」でPHPバージョンを確認

3. ファイルで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バージョンがサポート終了を迎える際に、度々この問題に遭遇しています。

推奨事項は、以下の通りです。

  1. 一見当たり前ではありますが、最新版でないプラグインやテーマは、常に更新を行うようにしてください。
  2. プラグインやテーマの開発者に問い合わせ、PHP 7.2、7.3、7.4、8.0(または変更しようとしている現在のバージョン)のサポートを追加/修正するように依頼してください。Kinstaでは、必要に応じてこれを行う時間を確保できる様、PHPのバージョンが段階的に下がる前にすべてのお客様に事前に通知をお届けしています。これは特に開発者を雇う予算がないユーザーにとって重要です。
  3. 同じ機能を持ち、新しいPHPバージョンと互換性のある代替プラグインを探してみてください。WordPressのリポジトリには、何千もの有料プラグインとテーマが揃っており、必ずと言っていいほど代替ツールは見つかるものです。
  4. 予算が確保できれば、WordPress開発者を雇って対処を依頼することをお勧めします。

PHPをバージョンアップする方法

それでは、最後にPHPをバージョンアップする方法をご紹介します。まず最初にすべきことは、サイトの互換性を確認するテストの実行です。WordPressサイトをローカル環境でテストすることもできますが、ステージング環境を利用すると、限りなく本番サイトに近い状態でテストすることができます。適切なバージョンアップを行うため、念には念を入れましょう。

Kinstaをご利用されている方は、ワンクリックで簡単にステージング環境を作成可能です。MyKinstaでPHPのバージョンを変更し、すぐにテストを実行しましょう。

WordPressのステージングサイトを作成
WordPressのステージングサイトを作成

古いバージョンを新しいものに変更する場合は、WordPress自体も更新されていることを確認してください。新しいバージョンのPHPと2年前のバージョンのWordPressでは、何かしらの問題が生じる可能性が高いです。サイトのテストを終えたら、以下にご紹介する手順に従って早速バージョンを変更しましょう。

WordPressサイトでPHPを変更する方法についてはこちらをご覧ください。

KinstaでPHPのバージョンを変更する

Kinstaのお客様は、MyKinstaでサイトをクリックして、「ツール」画面に移動し、「PHPエンジン」セクションのドロップダウンから簡単にPHPのバージョンを変更することができます。現在は、PHP7.4, 8.0, 8.1, 8.2, 8.3 , 8.4がご利用可能です。

MyKinstaでPHPのバージョンを変更
MyKinstaでPHPのバージョンを変更

また、Kinstaでは、自己修復PHPというシステムを採用しており、サイトのPHPエンジンがダウンすると、自動的に再起動されます。PHPの自動再起動に失敗した場合は、システム管理部門に通知され、すぐに問題の調査にあたります。

cPanelでPHPのバージョンを変更する

ご利用のサーバーがcPanelを採用している場合は、通常cPanelからPHPのバージョン変更が行えます。cPanelにログイン後、「ソフトウェア」セクションにある「Select PHP Version」をクリックします。

cPanelでPHPのバージョンを選択
cPanelでPHPのバージョンを選択

その後、お使いのサーバーでサポートされているバージョンを選択してください。

cPanelのPHP 7
cPanelのPHP 7

サーバーから自分でPHPのバージョンを更新する

自分でサーバー管理を行なっている場合は、PHP公式のインストールドキュメントを参照し、関数、クラス、ラッパー、拡張モジュールなどの変更点を確認することをお勧めします。以下、各バージョンの移行に関するドキュメントです。

まとめ

まだの方は、お早めにPHP 8.0、8.1、8.2へのアップグレードをご検討ください。サポートされているソフトウェアの利用だけでなく、パフォーマンスの向上も期待できます。お使いのサーバーでPHP 8.0、8.1、8.2がサポートされていない場合には、別のホスティングサービスに乗り換えることを強くお勧めします。テーマやプラグインについても同様です。開発元によるパッチのリリースがまだの場合は、代替の選択肢を探すのが得策かもしれません。

最近、PHP 8.0、8.1、8.2 に移行された方はいらっしゃいますか?これについてのご意見をお聞かせください。移行は簡単でしたか?それとも、まだアップデートを待っている状態でしょうか?

Brian Jackson

Brianの最大の情熱の一つは10年以上使用してきたWordPressです。複数のプレミアムプラグインさえ開発しています。Brianの趣味はブログや映画やハイキングなどです。TwitterでBrianとつながりましょう。