PHP Compatibility Checker 2022年にサポート修了。代替えは自作プラグイン?
2025年8月7日
Categories | ブログ(WordPress) SEO
PHP Compatibility Checker ワードプレス プラグイン
2022年サポート修了 代替えは自作スクリプト
当ブログをphp8にバージョンアップする前に、エラーチェックに導入してみたプラグイン。
良かれとインストールしてみたのだが・・・
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>";
(注意)セキュリティ上、チェックが終わったら必ずファイルを削除してください。
以上