Kinstaのお客様には、MyKinstaでWordPressサイトのPHPバージョンを個別に変更することができます。現在Kinstaでは、PHP 7.4, 8.0, 8.1, 8.2, 8.3 , 8.4をサポートしています。
以前のバージョンよりもはるかに高速で、リソースに優しく、安全であることから、PHP 8.1あるいは最新版の8.2の使用をお勧めします。PHPベンチマークレポートでは、 3倍も高速であることがわかっています。
PHPはバージョンリリースのスケジュールを発表しています。PHPの新しいバージョンは、それぞれ2年間保守され、1年間は重要なセキュリティアップデートが提供されます。Kinstaでは、お客様のサイトをできる限り高速で安全な状態に保つため、PHPのスケジュールに合わせて、PHPの各バージョンをサポート終了(EOL)日に非推奨にしています。
また、PHPの公式スケジュールを採用するだけでなく、2020年以降は、Kinstaのプラットフォーム上で毎年11月1日にPHPの旧バージョンのサポートを終了します。これにより、セール時期(ブラックフライデー、クリスマス、年末年始など)の前に余裕を持ってバージョンアップすることができます。
PHPバージョンを更新する理由
2つの主な理由はセキュリティとスピードにあります。
セキュリティの脆弱性から保護するためにWordPressコアを更新するのと同じように、PHPのバージョンアップも忘れてはなりません。セキュリティ上の利点があるだかえでなく、PHPのバージョンアップにより、大幅にサイトが高速化されます。PHP 7.0は、5.6に比べて2倍以上の性能向上という大きな改善が行われています。このように、バージョンを重ねるごとに性能の向上が見られます。
詳しくは、サポートされているPHPバージョンを使用する重要性をご覧ください。
ご利用のPHPバージョンが不明な場合は、MyKinstaの「ツール」画面にある「PHPエンジン」セクションで確認可能です。また、WordPress 5.0以上であれば、「サイトヘルス」でも確認することができます。
PHPのバージョン変更によるサイトの破損
PHPバージョンを更新するときに発生する問題は、サイトのコードでPHPの最新バージョンではサポートされていない古い関数が使用されているときに発生します。この原因はプラグインやテーマにあることが多いです。以下にご紹介する手順を参考にしてみてください。
WordPressのPHPバージョンを更新するには
今日は、PHPバージョンを更新する前に、WordPressサイトの互換性をテストする方法をご紹介します。これにより、サイトのダウンや設定の変更などを回避することができます。
一方、テストやトラブルシューティング、互換性の確認などの作業に慣れていない場合は、WordPress開発者に依頼する方が良いかもしれません。
単にWordPressの本番環境のPHPバージョンを更新したい方は、手順5まで読み飛ばしてください。ただし、異常が発生しないよう、手順1から順に進めていくことを強くお勧めします。
特に、PHP 7.4などの古いバージョンを実行している場合はご注意ください。
1. ステージングサイトを作成する
まず最初にステージングサイトを作成します。これは本番環境とは別のものであり、本番サイトを壊すことなく新しいバージョンのPHPを試験できます。
コントロールパネル「MyKinsta」で、左側のナビゲーションにある「サイト」をクリックすると、サイト一覧が表示されます。ステージング環境を追加したいサイト(PHPのバージョンを変更したいサイト)をクリックします。サイト名の横にある環境セレクタをクリックし、ドロップダウンメニューからステージングを選択し、「ステージング環境を作成」ボタンをクリックします。
ステージング環境に関する注意事項も必ずご一読ください。例えば、サードパーティのCDNをご利用の場合、サイトを正しくレンダリングするために無効にする必要がある場合があります。
これは、ステージングサイトが別のURLを使用しているためです。ステージング環境ではまた、キャッシングは無効になっているため、パフォーマンスをテストするときにご注意ください。
2. WordPressのPHPバージョンを更新する
WordPressサイトのPHPバージョンを変更するには、「サイト」から、PHPバージョンを変更したいサイトを選択します。次に、「ツール」タブをクリックし、「PHPエンジン」の下にある「変更」ボタンをクリックし、ドロップダウンメニューから希望のPHPバージョンを選択します。
PHPバージョンのテスト時には、本番環境ではなく、ステージング環境が選択されていることを確認してください。最初にPHP 8.0を使ってテストを実行することをお勧めします。サイトに問題が見られる場合は、Kinstaのカスタマーサポートまでいつでもご連絡ください。
ご希望のPHPバージョンを選択すると、確認画面が表示されます。 「PHPバージョン間の切り替え」ボタンをクリックして、確定します。
この処理には最大3分かかります。処理ができたらPHPエンジンが再起動されるため、WordPressのバックエンドで数秒のダウンタイムが発生する場合がありますが、訪問者はダウンタイムを一切経験しません。
PHPエンジン切り替え中は、ページを離れることはできますが、新たなエンジンが有効になるまで、キャッシュ管理などの機能は使用することができなくなります。完了するとすぐにMyKinsta内に通知が表示されます。
余談ですが、PHPのバージョンを変更すると、WordPressの「サイトに技術的な問題が発生しています」エラーが解消されることもあります。
3. ウェブサイト、プラグイン、テーマなどの試験
これで、PHPの最新版(またはご希望のバージョン)のステージングサイトができました。最初に、WordPressサイトをブラウジングしたりクリックしたりして、異常がないかを確認します。
プラグインやテーマなど、互換性のないものがある場合、ウェブサイトのフロントエンドで500エラー(501、502、503、504など) や「死の真っ白画面」が表示されることがあります。この場合、真の原因を特定できる最も簡単で速い方法は、すべてのサードパーティ製のプラグインを無効にし、1つずつ再度有効にすることです。なお、ステージングサイトであるため、本番サイトを破壊することは一切ありません。
WordPress管理画面の「プラグイン」ページで、すべてのプラグインを選択します。次に、プルダウンの「停止」を選択して「適用」をクリックします。
その後、1つずつ再度有効にして、毎回WordPressサイトにアクセスします。これにより、真の原因を絞り込むことができます。エラーが原因でWordPress管理画面にログインできない場合は、FTPを使用してプラグインを無効にすることも可能です。
WordPressのテーマでも同様のテストを行うことができます。Twenty Nineteenテーマなど、デフォルトのWordPressテーマに一時的に切り替えるだけです。
MyKinstaでログファイルを確認する
異常を引き起こすプラグインやテーマを特定できたが、なぜかはわかりませんか?そこで、WordPressのエラーログが便利です。単に、WordPressサイトの1つをクリックし、右側の「エラーログ」をクリックします。
そこで、error.log、kinsta-cache-perf.log、およびaccess.logファイルを確認できます。デフォルトでは、最後の1,000行が表示されますが、スライダーをドラッグして、最後の2万行を表示するようにすることが可能です。
注)MyKinstaログツールにはデバッグ情報が表示されません。デバッグ情報を表示するには、以下に説明があるように、WP_DEBUG
を有効にします。
SFTPを使用して生ログファイルの確認する
変更されていないままのログを確認するには、SFTPを使用して/logs/
を確認します。
SSHでログファイルを追跡する
ウェブサイトが試験中に、SSHを使用してログを追跡できます。つまり、テスト中にログの更新をライブで監視できます。Kinstaの全てのホスティングプランにはSSHアクセスが含まれています。
最後の500行を表示する
tail -n 500 /www/sitename/logs/error.log
ファイルをリアリタイムで見る
エラーログファイルの更新をリアルタイムで監視します。
tail -f /www/sitename/logs/error.log
SSHアクセスをお持ちの方にとって、WP-CLIは非常に貴重なツールになります。
デバッグモードをMyKinstaで有効にする
Kinstaのお客様は、MyKinstaでWordPressのデバッグモードを有効にすることができます。手順は「サイト」> 「ツール」> 「WordPressデバッグ」に移動し、「利用する」ボタンをクリックするだけ。これでSSHまたはSFTPをご利用せずにデバッグモードが有効になり、PHPのエラーや通知を確認できるようになります。
当社の自己修復PHP機能は、異常が発生した場合にPHPを自動的に再起動します。手動でPHPの再起動をご希望の場合は、該当するサイトの「ツール」画面に移動し、「PHPの再起動」をクリックしてください。
デバッグログ機能をWordPressで有効にする
SSHアクセスまたはMyKinstaへのアクセスをお持ちでない場合は、デバッグログ機能をWordPressで有効化してください。まず、SFTPでウェブサイトにアクセスします。次にwp-config.php
ファイルを編集できるようにダウンロードします。
/* That's all, stop editing! Happy blogging. */
を探し、その直前に次を追加します(下記を参照):
define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); define( 'WP_DEBUG_DISPLAY', false );
wp-config.php
ファイルに既に上記のコードが存在しているが、「false」に設定されている場合には、単に 「true」に変更してください。これにより、デバッグモードが有効になり、/wp-content/debug.log
ファイルが完全に表示されます。存在している場合には、WordPress管理画面にも警告またはエラーが表示されます。
注)これらのファイルは急速に重くなるため、完了したら無効にすることを忘れないでください。
探すもの
プラグインやテーマが何千も存在しているため、残念ながら、発生する可能性のあるすべてのエラーを述べることはできません。異常は通常、コード(関数、構文など)が該当のPHPバージョンとの互換性がないために発生します。たとえば、下記のような内容が表示されます。
500: Fatal error: Uncaught Error: A semicolon (';') is expected here. in /www/sitename/public/wp-content/plugins/bbpress-shortcodes/bbpress-shortcodes.php:177
上記からわかるように、異常の原因はbbPress Shortcodesプラグインであることをすばやく簡単に絞り込むことができます。
プラグインとの互換性の問題が発生することは、避けたいもの。以下のヒントを参考にしてみてください。
- プラグインとテーマを最新の状態に更新する
- プラグインまたはテーマ開発者に連絡をとり、PHP 7.4(またご利用のバージョン)のサポートを追加するように依頼する(これを考慮し、Kinstaではサポート終了が発表された時点でお客様にお知らせしています)
- 該当のPHPバージョンと互換性があり同じ機能を持つ代替プラグインを探す
- WordPress開発者を雇用して対応してもらう
- PHPを低いバージョンに変更し、該当のプラグインまたはテーマが正常に動作するかを確認する。正常である場合は、コードが更新されるまでそのバージョンを使用することができますが、PHP 8.0の方がより高速でサポートの期間が長いため、最善の策ではありません(どうしても必要なプラグインで、PHP 7.4でしか機能しないという場合はOK)。
4. ステージングサイトを本番サイトに反映する
PHPのテストが完了したら(プラグインやテーマの変更が伴うかどうかにもよって)ステージング環境を本番環境に反映することも、ステージングサイトに加えたのと同じ変更を本番サイトで実行することもできます。
サイトがPHPの新しいバージョンでも正常に機能するために、ステージングをかなり徹底的に調整する必要がある場合があります。その場合、「本番サイトに公開」機能を使用すると、時間を節約できます。
これを行うには、まず選択されている環境はステージング環境であることを確認してください。次に、「本番サイトに公開」ボタンをクリックします。
WordPressサイトのPHPバージョンの更新に関する不明点などがございましたら、24時間年中無休でご利用いただける、MyKinstaのライブチャットサポートよりお気軽にお問い合わせください。
5. 本番サイトのPHPを変更する
これでPHPの変更準備が整いました。上記手順2と同じ方法で、今度は本番サイトのPHPバージョンを変更します(「ツール」>「PHPエンジン」>「変更」>ご希望のPHPバージョンを選択)。