PHP Compatibility Checker 2022年にサポート修了。代替えは自作プラグイン?

Categories | ブログ(WordPress) SEO

PHP Compatibility Checker ワードプレス プラグイン

2022年サポート修了 代替えは自作スクリプト

2025 0807 400x241 PHP Compatibility Checker 2022年にサポート修了。代替えは自作プラグイン?

当ブログをphp8にバージョンアップする前に、エラーチェックに導入してみたプラグイン。

良かれとインストールしてみたのだが・・・

2025 0807 1 PHP Compatibility Checker 2022年にサポート修了。代替えは自作プラグイン?

API や外部サービスに対して「監査(audit)」関連のリクエストを送信しているが、version パラメータが設定されていない。WordPress やプラグイン内で プロジェクトのバージョン番号を指定する項目が空欄のまま。自作コードや設定ファイルの中で「version」を送っていない。

このようなテーマのエラーが検出されたので深堀してみた。

ってか、ムズそうだったのでチャッピー(ChatGPT)に問いかけてみた。

回答はこうだ。

 

このプラグインは WP Engine の外部APIにサイト情報を送ってスキャンする仕組みなのですが、2021年頃から APIの提供が終了していて、現在はメンテナンスされていません。そのため、「audit project version」という必須パラメータを API 側が要求するようになった。しかしプラグインは古いままで対応していない。
→ 400エラーで動かない という状態になっています。
残念ながら 公式の PHP Compatibility Checker はもう利用できません。
代替手段が必要になります。

1. 代替プラグイン
Code Profiler(互換性テスト含む)
Query Monitor(間接的にPHPエラー確認)

 

2. 手動でチェックする方法
WordPress公式の 対応PHPバージョン表 を参照しつつ、テーマやプラグインが PHP 8.1/8.2/8.3 に対応しているか確認する。
テスト環境で実際に新しい PHP バージョンを切り替えて確認。

 

3. Composer不要の簡易チェック
WordPress環境に設置してPHP互換性を簡易チェックできるスクリプト。
※ 自作スクリプトファイルを作り、そのファイルにエラーを検出する方法ね。

 

じゃ自作スクリプトを作ってみますかね。

サーバーの WordPress ルートフォルダ(wp-config.php がある場所)に
php-compat-checker.php というファイルを作成。
後はブラウザで
https://あなたのサイト/php-compat-checker.php
にアクセスするだけで、サイトのPHPバージョン/非推奨関数の検出結果
が表示されます。

 

php-compat-checker.phpの中身のコードは下記参照。

<?php
/**
* Simple PHP Compatibility Checker (standalone)
* Composer不要 / サーバーにアップロードしてブラウザからアクセスして使用
*
* 注意:
* - あくまで簡易チェックです
* - 正式な PHPCompatibility (PHP CodeSniffer) ほど正確ではありません
* - テスト用サーバーでの利用推奨
*/

$directory = __DIR__; // WordPressのルートからチェック
$phpVersion = phpversion();
echo "<h1>PHP Compatibility Checker</h1>";
echo "<p>現在のPHPバージョン: <strong>{$phpVersion}</strong></p>";
echo "<p>チェック対象ディレクトリ: {$directory}</p><hr>";

$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($directory)
);

$issues = [];
foreach ($iterator as $file) {
if ($file->isFile() && preg_match('/\.(php|inc)$/i', $file->getFilename())) {
$content = file_get_contents($file->getPathname());

// 簡易検出ルール
$patterns = [
'mysql_' => '古いmysql_*関数 (PHP7.0以降削除)',
'create_function' => 'create_function() (PHP7.2以降非推奨)',
'each\(' => 'each() (PHP7.2以降削除)',
'ereg' => 'ereg系関数 (PHP7.0以降削除)',
'split\(' => 'split() (PHP7.0以降削除)',
'magic_quotes' => 'Magic Quotes関連 (PHP5.4以降削除)',
];

foreach ($patterns as $pattern => $desc) {
if (preg_match("/{$pattern}/i", $content)) {
$issues[] = [
'file' => $file->getPathname(),
'issue' => $desc
];
}
}
}
}

// 結果表示
if (empty($issues)) {
echo "<p style='color:green'><strong>問題は見つかりませんでした!</strong></p>";
} else {
echo "<h2>検出された互換性の問題</h2>";
echo "<ul>";
foreach ($issues as $issue) {
echo "<li><code>{$issue['file']}</code> → {$issue['issue']}</li>";
}
echo "</ul>";
}

echo "<hr><p>※ このスクリプトは簡易チェックです。</p>";

 

(注意)セキュリティ上、チェックが終わったら必ずファイルを削除してください。

以上

Comment(0) | Trackback(1)

TAGS: / | 2025年8月7日 |

« »

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です