2026年5月20日

2026年5月20日

PHP8.0/8.1/8.2との互換性問題を解決する方法【プラグイン・テーマ対応】

はじめに

PHPを8.0・8.1・8.2にアップグレードした後にWordPressでエラーが発生するケースが増えています。PHP8系では7.x系で動いていた一部の書き方がエラーになるため、プラグインやテーマがPHP8に対応していない場合に問題が起きます。

PHP8で壊れやすい主な変更点

// 1. 型の厳格化:数値文字列を非数値と演算するとTypeError
$result = "abc" + 1;  // PHP7ではWarning → PHP8ではTypeError

// 2. 配列のソート安定性(動作変更)
// usort等の比較関数が0を返す場合の順序が変わった

// 3. Named Arguments(新機能で既存コードと競合)
array_slice($array, offset: 0, length: 5);

// 4. match式(PHP8の新構文、古いコードと競合しない)

// 5. null処理の変更
$obj = null;
$obj->method();  // PHP7ではNotice → PHP8ではFatal error

PHP8.1・8.2での追加変更

// PHP8.1:enum(列挙型)追加・Intersection Types
// readonly プロパティ追加

// PHP8.1で廃止:
// mysql_* 関数(PHP7で削除済みだが念のため確認)
// ${var} 文字列補間形式 → Deprecated

// PHP8.2:動的プロパティの廃止
class MyClass {}
$obj = new MyClass();
$obj->newProp = 'value';  // PHP8.2でDeprecated

解決手順

ステップ1:エラーの詳細を確認

// wp-config.phpでデバッグモードを有効化
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);

/wp-content/debug.logでエラーのファイル名を確認して、どのプラグイン・テーマが原因か特定します。

ステップ2:プラグイン・テーマを最新版に更新

PHP8対応は各プラグインのアップデートで順次対応されています。まず全プラグインとテーマを最新版に更新します:

1. 管理画面 → 「ダッシュボード」→「更新」

2. 「すべて更新」をクリック

ステップ3:互換性のないプラグインを特定

特定のプラグインが原因の場合、FTPで無効化して確認:

/wp-content/plugins/問題のプラグイン/
→ /wp-content/plugins/問題のプラグイン_off/

または「PHP Compatibility Checker」プラグインで一括チェックも可能です。

ステップ4:PHPバージョンを一時的に下げる

問題の多いプラグインが必要不可欠で代替がない場合、一時的にPHPを下げることも選択肢です:

エックスサーバーの場合:

1. サーバーパネル → 「PHP Ver.切替」

2. 対象ドメインを選択

3. PHPバージョンを変更(例:8.2→8.1→8.0→7.4)

ConoHaの場合:

1. コントロールパネル → 「サイト管理」→「PHP設定」

2. PHPバージョンを変更

ただし、これは一時的な解決策です。使用中のプラグインをPHP8対応のものに切り替えるか、代替プラグインを探すことを推奨します。

ステップ5:PHP8で廃止された関数を修正

自作のコード(functions.phpや自作プラグイン)にPHP8非互換のコードがある場合の修正例:

// ❌ PHP7まで:create_function(PHP8で廃止)
$fn = create_function('$x', 'return $x * 2;');

// ✅ PHP8対応
$fn = function($x) { return $x * 2; };

// ❌ PHP7まで:each()(PHP8で廃止)
while (list($key, $value) = each($array)) { ... }

// ✅ PHP8対応
foreach ($array as $key => $value) { ... }

PHP Compatibility Checkerプラグインの使い方

1. プラグインをインストール・有効化

2. 「ツール」→「PHP Compatibility」

3. 確認したいPHPバージョンを選択して「Run Test」

4. 非互換コードの一覧が表示される

まとめ

PHP8互換性エラーは①デバッグモードで原因プラグインを特定→②プラグインを最新版に更新→③どうしても動かなければPHPバージョンを一時的に下げるの順で対処します。長期的にはPHP8対応のプラグイン・テーマへの移行が必要です。

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ