PHP8に変更したらWordPressが500エラーになったときの復旧手順|cURL error 60の対処つき

飯田市でホームページ制作をしている牧内です。

レンタルサーバーのPHPバージョンを変更したところ、WordPressのホームページが表示されなくなった、というご相談がありました。サイトは長く更新されておらず、管理画面にも入れない状態でした。

結果として、PHP7.4への一時的な切り戻し、バックアップ、CA証明書ファイルの交換、WordPress本体・プラグイン・テーマの更新、PHP8.2への移行を行い、作り直さずに復旧できました。

この記事では、その手順を、実際に効いた順に整理します。同じ症状で検索された方が、迷わず進められることを目指しました。飯田市・南信州でホームページ制作会社をお探しの方にも、古いWordPressの対応例として参考になればと思います。

サーバー、テーマ、プラグインの組み合わせで状況は変わります。ここに書いた手順が、すべての環境で同じ結果になるとは限りません。

この記事の要点

  • PHP変更後に500エラーが出たら、PHPを元のバージョンに戻して、まず管理画面に入れる状態にする
  • 更新の前に、ファイル・データベース・旧テーマをバックアップする
  • 更新時に「cURL error 60」が出る場合は、WordPress内の ca-bundle.crt を新しいものに交換する
  • 更新の順序は、WordPress本体 → プラグイン → テーマ → PHP
  • 一時的に戻したPHP7.4は、公式サポートが終了しているため、そのまま使い続けない

現象:PHP8への変更後に500エラー

レンタルサーバーのPHPをPHP8.4に変更したところ、サイトに「HTTP ERROR 500」が表示されました。管理画面にもログインできず、管理画面からの更新もできない状態でした。

調べると、環境は次のとおりでした。

項目更新前の状態
WordPress本体Ver.5.1.19(2019年登場)
テーマ国内の有料テーマ(2018年頃のバージョン)
プラグイン古いバージョンが複数
SSL化未対応
PHP8.4に変更後、500エラー

仮説:PHPと古いプログラムの互換性

500エラーは、PHPの互換性のほかに、プラグインの不具合やサーバー設定でも起きます。今回は、PHPを変更した直後に起きたこと、WordPress本体とテーマが数年更新されていなかったことから、古いプログラムが新しいPHPに対応できていないと推測しました。

検証:PHPを7.4に戻す

PHPのバージョンを7.4に戻したところ、ホームページが表示され、管理画面にもログインできました。これでPHPの変更が原因であることを確認できました。

ここでの注意点は2つです。

  • PHP7.4は公式サポートが終了しているため、一時的な措置にとどめる
  • 管理画面に入れる状態を確保したうえで、更新作業に進む

真因:WordPress・テーマ・証明書がまとめて古かった

原因は一つではありませんでした。次の3点が重なっていました。

  1. WordPress本体、テーマ、プラグインが、新しいPHPに対応していなかった
  2. WordPressの更新が、SSL証明書の検証エラー(cURL error 60)で失敗していた
  3. 更新時に確認が必要な、既存テーマのカスタマイズが残っていないか未確認だった

以下、実際に行った手順です。

手順1:更新前にバックアップを取る

古いWordPressから最新版への更新は、変更が大きくなります。更新前に、次のバックアップを取りました。

ファイル一式(FTP)

  • WordPress本体
  • テーマ、プラグイン
  • アップロードされた画像・PDF
  • wp-config.php などの設定ファイル
  • 公開フォルダ直下の設定ファイル

今回は、WordPressがサブフォルダに入っていました。そのため、WordPress本体のフォルダだけでなく、公開フォルダ直下のファイルも確認しています。

データベース

記事や固定ページ、各種設定は、データベースに保存されています。ファイルだけでは復元できないため、SQL形式でエクスポートし、展開して中身と容量を確認してから保管しました。

記事のXMLエクスポート

管理画面の「ツール → エクスポート」で、投稿と固定ページをXMLで保存しました。データベース全体の代わりにはなりませんが、記事を別形式で残しておく手段になります。

旧テーマのファイル

テーマを更新すると、古いテーマファイルは置き換えられます。テーマに直接書き加えたコードがあると、更新で消えるため、旧テーマのファイルを保存して、独自のカスタマイズがないか確認しました。

手順2:「cURL error 60」で更新できないときの対処

WordPress本体の更新を始めると、更新ファイルのダウンロード段階で次のエラーが出て、失敗しました。プラグインの更新も同様でした。

text

cURL error 60: SSL certificate problem:
unable to get local issuer certificate

エラーの意味

HTTPS通信で、接続先のSSL証明書を検証できないときに出るエラーです。WordPressは、更新時に外部のサーバーから更新ファイルを取得します。このとき、wp-includes/certificates/ca-bundle.crt に入っている証明書の情報で、通信先を検証します。

対処:ca-bundle.crt を新しいものに交換する

古いWordPressの ca-bundle.crt が古くなり、検証に失敗していたと思います。次の手順で交換しました。

  1. サーバー上の wp-includes/certificates/ca-bundle.crt を、ローカルにダウンロードして保存する
  2. 最新版のWordPressのパッケージに含まれる ca-bundle.crt を用意する
  3. サーバー上のファイルを、新しいものに上書きする

交換後に、WordPress本体の更新を再実行すると、正常に進みました。プラグインの更新も、同様に通るようになりました。

証明書の検証を無効にする方法は使わない

検索すると、証明書の検証を無効にする設定が紹介されていることがあります。検証を無効にすると、通信先が本物かどうかを確認できなくなり、セキュリティ上のリスクが残ります。今回は、無効化せず、古い証明書ファイルの交換で対応しました。

cURL error 60は、サーバー側の証明書設定が原因になることもあります。この方法で、すべての環境で解決するとは限りません。

手順3:WordPress本体を更新する

更新は、次の順で進めました。

WordPress Ver.5.1.19 → 最新版(Ver.7系)

古いバージョンからの更新のため、処理に時間がかかり、途中で管理画面の表示が不安定になりました。最終的には更新が完了し、管理画面とサイトの表示を確認しました。

手順4:プラグインを更新する

本体の更新後に、プラグインを更新しました。このサイトでは、お問い合わせフォーム、画像表示、セキュリティ、カスタムフィールドなどが、プラグインで実装されていました。

更新できても、動作するとは限りません。特にお問い合わせフォームは、実際に送信テストをします。

手順5:テーマを更新する

使用していた有料テーマを、2018年頃のバージョンから最新版に更新しました。

  1. 手順1で保存した旧テーマのファイルを確認し、独自のカスタマイズ(直接書き加えたCSSやPHP)がないか調べる
  2. 提供元の公式サイトから、最新版のテーマファイルを取得する
  3. 管理画面のテーマアップロード機能で、最新版をアップロードし、旧テーマを置き換える
  4. サイトの表示を確認する

今回は、明確な独自修正は見当たりませんでした。テーマの更新は問題なく完了し、表示にも崩れはありませんでした。

手順6:PHPをPHP8.2に切り替える

本体・プラグイン・テーマの更新が済んでから、PHPをPHP8.2に切り替えました。

PHP 7.4 → 8.2

ホームページと管理画面が、正常に表示されました。PHPだけを変更しても復旧しなかったのは、PHP以外のプログラムも古かったためです。

手順7:ホームページのSSL化

このサイトは、SSL化されていませんでした。サーバーでSSL証明書を申し込み、HTTPSで表示できるようにしました。

SSL化と、手順2のcURL error 60は、別の問題です。サイトをSSL化しても、WordPressの更新エラーは解消しません。

手順8:メール用Web領域のPHPを確認する

このサーバーでは、メール用のWeb領域に、PHP5.6が設定されていました。メールの送受信は、通常PHPでは処理されていません。ただし、PHPを使うWebメールや独自プログラムがある場合は、PHPの変更で影響が出ます。

メール用Web領域のファイルと設定を確認したところ、PHPを使うプログラムは見当たりませんでした。そのため、PHPを5.6から8.2に変更しました。変更後は、メールの送受信を確認します。

復旧後の確認項目

  • サイトのトップページと下層ページが、崩れずに表示される
  • 管理画面にログインでき、投稿の編集ができる
  • お問い合わせフォームの送信テストが通る
  • HTTPSで、警告なしに表示される
  • メールの送受信が正常に行える
  • PHPのWarningやNoticeが画面に出ていない

古いWordPressを更新するときの順序

今回の手順をまとめると、次のとおりです。

  1. PHPを元のバージョンに戻し、管理画面に入れるようにする
  2. ファイル・データベース・旧テーマをバックアップする
  3. 更新エラー(cURL error 60など)の原因を取り除く
  4. WordPress本体 → プラグイン → テーマの順に更新する
  5. 表示と機能(特にフォーム)を確認する
  6. PHPを新しいバージョンに切り替える
  7. メールなど、同じサーバー上の関連設定を確認する

作り直さずに復旧できる場合

PHPの変更で表示されなくなると、サイトを作り直す必要があるのかと、心配される方が多いと思います。今回のように、原因がWordPress本体・テーマ・プラグインの古さにある場合は、既存のサイトを活かして復旧できることがあります。

ただし、すべてのサイトがそうとは限りません。テーマやプラグインの提供が終わっている場合や、独自のプログラムが多く組み込まれている場合は、コードの修正や一部の作り直しが必要になります。

まとめ

PHP8への変更で表示されなくなったWordPressは、PHPを一時的に戻し、バックアップを取り、cURL error 60の原因(古いCA証明書ファイル)を取り除いたうえで、本体・プラグイン・テーマを順に更新して復旧しました。最後にPHP8.2へ切り替えています。

WordPressは、PHP、データベース、テーマ、プラグインなど、複数のプログラムで動いています。どれか一つを新しくしても、他が古ければ動きません。PHPのバージョンアップのお知らせが来たときは、WordPress本体、テーマ、プラグインのバージョンを、先に確認しておくことをお勧めします。

Home
サービス
制作実績
お客様の声
デザイナー紹介
問合せ