PHP Compatibility Checker

説明

WP Engine の PHP Compatibility Checker は、あらゆる Web サーバーで運用する WordPress で PHP バージョンの互換性を確認することができます。

このプラグインは、WordPress のファイルシステムに含まれているテーマやプラグインのコードについて、互換性の問題を改修するためのレポートを作成します。互換性の問題は、エラーと警告に分類し、問題のコードが含まれるファイルと行番号そして、選択した PHP バージョンと互換性が無い理由を記します。また、互換性がある最新バージョンが提供されている可能性があるため、テーマやプラグインのアップデートを提案します。

このプラグインはテーマやプラグインのコードを実行しないので、ランタイムの互換性に関する問題を検出することはできません。

互換性の確認は完璧ではないことを理解してください。このプラグインでは、下位互換で使用する未知のコード/パスを互換性無しと判定することがあります。誤判定の可能性があるプラグインはプラグインのホワイトリストにまとめています。最も正確なチェック結果になるよう、継続して取り組んでいます。

このプラグインはバックグラウンドでファイルをスキャンするために WP-Cron に依存しています。サイトの WP-Cron が正しく動作していない場合、スキャンが固まってしまいます。詳細は FAQ を参照してください。

PHP 7.3 にアップデートする

  • このプラグインを使って、PHP 7.3 とサイトとの互換性を確認しましょう !
  • 2019年7月現在、WordPress サイト全体の 20.1% は PHP 5.6 以前のバージョンで動作しています。
  • これらのバージョンの PHP は、2年以上前に非推奨およびサポート終了されています。
  • 最新の現行 PHP バージョンである PHP 7 で動作する WordPress は、全体の 54.1% です。

免責事項

このプラグインはできる限り多くの問題を正確に検出するよう作成していますが、100%確実な検出は非常に困難です。新しい PHP バージョンに移行する前に、総合テストの実施をお勧めします。

このプラグインは、WordPress コミュニティで最新 PHP バージョンの利用促進を支援する目的で WP Engine により作成しました。このプラグインへのコントリビューターを歓迎するとともに、開発者や WordPress を運用している方がどのように利用しているのか伺うことに興奮しています。

このプラグインのセキュリティ問題を報告するには WordPress@wpengine.com へメールを送信してください。
PHP Compatibility Checker は WP-CLI コマンドに対応しています :

wp phpcompat <version> [--scan=<scan>]


<version>
    PHP version to test.

[--scan=<scan>]
  Whether to scan only active plugins and themes or all of them.
  default: active
  options:
    - active
    - all

例: wp phpcompat 7.2 --scan=active

スクリーンショット

  • メイン画面: 互換性チェックのオプション
  • 互換性チェック結果画面

インストール

注: WordPress 2.7 以降を利用している場合は、WordPress 管理画面から 「プラグイン」 > 「新規追加」で「PHP Compatibility Checker」を検索し、インストールしてください。

手動インストール手順:
1. phpcompat/wpengine-wp-content/plugins/ ディレクトリにアップロードしてください
2. WordPress 管理画面「プラグイン」メニューで、プラグインを有効にしてください

このプラグインの設定画面は、WordPress 管理画面 ツール => PHP Compatibility メニューにあります。 サイトをスキャンをクリックすると数分程度かけてスキャンを実施します。スキャン中はページを離れてもかまわず、後ほど設定画面に戻ることで結果を表示します。

WP-CLI コマンドに対応しており、詳しくはOther Noteを参照してください。

FAQ

  1. WP Engine ホスティングアカウント以外でも動作しますか ?

    はい、このプラグインはすべてのサーバーで運用する WordPress で利用することができます。

  2. WP-CLI コマンドに対応していますか ?

    はい、このプラグインは WP-CLI コマンドに対応しています。詳細は Other Notes を参照してください。

  3. 作成したプラグインは互換性がないと表示されています。どうすればよいですか ?

    誤判定の可能性があるプラグインはプラグインのホワイトリストにまとめています。もし、スキャン結果が誤っているプラグインがあれば、GitHub issue に Issue を追加するか、wordpress@wpengine.com 宛にプラグインに関する詳細な情報と、互換性に関する情報 (スキャン結果、互換性のテストに失敗したパスなど) を含めてメールで連絡をください。

  4. WordPress 以外の PHP プロジェクトをテストするために使うことはできますか ?

    はい ! このプラグインを使用して WordPress 以外のプロジェクトをテストすることはできませんが、プラグインで利用している Open Source PHPCompatibility Library を使用することが可能です。

  5. どうして自分のプラグインやテーマがスキップされたのでしょうか。

    一部のサーバーでは、長時間の問い合わせ実行を防ぐため、一般的に60秒でのタイムアウトを設けています。このため、巨大なテーマやプラグインのチェックができない可能性があります。このタイムアウトを一時的に無効化が可能か、サーバーの管理者に確認する必要があります。この事象を回避するベストな方法は、対象の WordPress を Local Server にインストールするか、WP-CLI コマンドで実行する方法になります。

    スキャンのタイムアウトを wpephpcompat_scan_timeout で設定することができます。設定例は、こちらを参照してください。

    タイムアウトを0に設定すると、cron/タイムアウトが無効になります。

  6. スキャンが途中で停止しました。何ができますか ?

    PHP Compatibility Checker は、WP-Cron に依存するプラグイン/テーマの処理による、サーバーのタイムアウトを回避する必要があります。WP-Cron の機能を停止しないと、調査することができません。 WP Crontrol で確認することができます。cron は wpephpcompat_start_test_cron で呼ばれます。また、サイトに基本認証を使用している場合も問題になる可能性があります。

    また、WP-Cron を使用せずに実行するには、WP-CLI コマンドを使用するか、タイムアウトを無効にしてください。

  7. バグを見つけたり、提案したいのですが、どのように貢献することができますか ?

    はい ! WP Engine では、本プラグインに貢献することができる GitHub に公開のリポジトリがあります。Plugin GitHub に issue を立ててください。私たちは本プラグインを積極的に開発しており、プルリクエストを受けていることがいつもうれしいです。

    このプラグインは、WordPress コミュニティで最新 PHP バージョンの利用促進を支援する目的で WP Engine により作成しました。このプラグインへのコントリビューターを歓迎するとともに、開発者や WordPress を運用している方がどのように利用しているのか伺うことに興奮しています。

このプラグインにおける非公開のセキュリティに関する問題の詳細は、 WordPress@wpengine.com 宛にメールをください。

評価

2019年10月7日
Hello, I'm trying to run it through CLI using the following command: wp phpcompat 7.3 --scan=active And this is the output: PHP Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /sites/ccessep19/wp-content/plugins/php-compatibility-checker/vendor/squizlabs/php_codesniffer/CodeSniffer/File.php on line 1766 Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /sites/ccessep19/wp-content/plugins/php-compatibility-checker/vendor/squizlabs/php_codesniffer/CodeSniffer/File.php on line 1766 PHP Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /sites/ccessep19/wp-content/plugins/php-compatibility-checker/vendor/squizlabs/php_codesniffer/CodeSniffer/File.php on line 2883 Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /sites/ccessep19/wp-content/plugins/php-compatibility-checker/vendor/squizlabs/php_codesniffer/CodeSniffer/File.php on line 2883 PHP Fatal error: Uncaught Error: Call to undefined method PHPCompatibility\PHPCSHelper::findStartOfStatement() in /sites/ccessep19/wp-content/plugins/php-compatibility-checker/vendor/phpcompatibility/php-compatibility/PHPCompatibility/Sniffs/FunctionUse/ArgumentFunctionsReportCurrentValueSniff.php:323 Stack trace: #0 /sites/ccessep19/wp-content/plugins/php-compatibility-checker/vendor/squizlabs/php_codesniffer/CodeSniffer/File.php(576): PHPCompatibility\Sniffs\FunctionUse\ArgumentFunctionsReportCurrentValueSniff->process(Object(PHP_CodeSniffer_File), 3362) #1 /sites/ccessep19/wp-content/plugins/php-compatibility-checker/vendor/squizlabs/php_codesniffer/CodeSniffer.php(1894): PHP_CodeSniffer_File->start(NULL) #2 /sites/ccessep19/wp-content/plugins/php-compatibility-checker/vendor/squizlabs/php_codesniffer/CodeSniffer.php(1772): PHP_CodeSniffer->_processFile('/sites/ccessep1...', NULL) #3 /sites/ccessep19/wp-content/plugins/php-compatibility-checker/vendor/squizlabs/php_codesniffer/CodeSniffer.php(653): PHP_CodeSniffer->process in /sites/ccessep19/wp-content/plugins/php-compatibility-checker/vendor/phpcompatibility/php-compatibility/PHPCompatibility/Sniffs/FunctionUse/ArgumentFunctionsReportCurrentValueSniff.php on line 323 Fatal error: Uncaught Error: Call to undefined method PHPCompatibility\PHPCSHelper::findStartOfStatement() in /sites/ccessep19/wp-content/plugins/php-compatibility-checker/vendor/phpcompatibility/php-compatibility/PHPCompatibility/Sniffs/FunctionUse/ArgumentFunctionsReportCurrentValueSniff.php:323 Stack trace: #0 /sites/ccessep19/wp-content/plugins/php-compatibility-checker/vendor/squizlabs/php_codesniffer/CodeSniffer/File.php(576): PHPCompatibility\Sniffs\FunctionUse\ArgumentFunctionsReportCurrentValueSniff->process(Object(PHP_CodeSniffer_File), 3362) #1 /sites/ccessep19/wp-content/plugins/php-compatibility-checker/vendor/squizlabs/php_codesniffer/CodeSniffer.php(1894): PHP_CodeSniffer_File->start(NULL) #2 /sites/ccessep19/wp-content/plugins/php-compatibility-checker/vendor/squizlabs/php_codesniffer/CodeSniffer.php(1772): PHP_CodeSniffer->_processFile('/sites/ccessep1...', NULL) #3 /sites/ccessep19/wp-content/plugins/php-compatibility-checker/vendor/squizlabs/php_codesniffer/CodeSniffer.php(653): PHP_CodeSniffer->process in /sites/ccessep19/wp-content/plugins/php-compatibility-checker/vendor/phpcompatibility/php-compatibility/PHPCompatibility/Sniffs/FunctionUse/ArgumentFunctionsReportCurrentValueSniff.php on line 323 I've also tested with 7.2 and same output. However from the dashboard seems to be working fine (though ULTRA SLOW) Thanks,
2019年9月5日
Unable to check PHP error Warning: Use of undefined constant videotag - assumed 'videotag' (this will throw an Error in a future version of PHP) in
2019年8月26日
Hi, The idea is fantastic. However it did not work at all on my site. I am using an external cron to call WP-CRON and even though it wp-cron was called every 5 minutes, everything was crazy slow. After half a day this had only checked 19 plugins and still no result. I had to manually add the cron call for anything to happen. Needs a bit more work: keep it up!
2019年8月26日
I waited more than 1 hr. to get the result: "The plugin/theme was skipped as it was too large to scan before the server killed the process." for ALL the plugin I have. There must be an option to probe the system before the check starts!
2019年8月10日
There are about 30 plugins on my side and most of them weren't checkt because they are 'lo large'. So the only way to proof compability is to install a second server and test all in a sandbox. The Plugin is just a waste of Time.
77件のレビューをすべて表示

貢献者と開発者

PHP Compatibility Checker はオープンソースソフトウェアです。以下の人々がこのプラグインに貢献しています。

貢献者

“PHP Compatibility Checker” は13ロケールに翻訳されています。 翻訳者のみなさん、翻訳へのご協力ありがとうございます。

“PHP Compatibility Checker” をあなたの言語に翻訳しましょう。

開発に興味がありますか ?

コードを閲覧するか、SVN リポジトリをチェックするか、開発ログRSS で購読してみてください。

変更履歴

1.5.0

  • PHP 7.3 の互換性チェックを追加しました。

1.4.8

  • 依存関係を更新しました

1.4.7

  • よりよい翻訳サポート。

1.4.6

  • 誤検知を防ぐために新しい PHPCompatibilityWP ライブラリに切り替えました。

1.4.5

  • スクリプトとスタイルのエンキューにプラグインのバージョン情報を使用するようにしました。

1.4.4

  • PHP 5.2 & PHP 7.1 と 7.2 の構文チェックに対応します。
  • プラットフォームごとにサイドバーの CTA (コール・トゥ・アクション) を更新しました。

1.4.3

  • Composer の問題を解決しました。

1.4.1

  • セキュリティ勧告を修正するため PHP_CodeSniffer を更新しました。
  • 複数のプラグインをホワイトリストに追加しました。

1.4.0

  • PHP エラーを直感的に表示し、スクロールが少なくて済むよう UX をアップデートしました。
  • 技術者ではない方への機能として、開発者が PHP のエラー修正や、PHP 7対応のサーバー環境でのテストを支援するためのリンクを追加しました。

1.3.2

  • 「Clean up」ボタンと uninstall.php を追加しました。
  • phpcompat_phpversions のチェックを追加しました。

1.3.1

  • 複数のプラグインをホワイトリストに追加しました。

1.3.0

  • 「PHPCompatibility」を最新バージョンに更新しました。誤判定の多くが修正されたはずです。
  • 言語を切り替え、管理画面にヘルプテキストを追加しました。

1.2.4

  • Composer の問題を解決しました。

1.2.3

  • 「PHPCompatibility」を最新バージョンに更新しました。
  • 「TablePress」をホワイトリストに追加しました。

1.2.2

  • 「UpdraftPlus」と「Max Mega Menu」をホワイトリストに追加しました。

1.2.1

  • 「PHPCompatibility」を最新バージョンに更新しました

1.2.0

  • 「PHPCompatibility」を最新バージョンに更新しました
  • PHP 5.6に対応しました。

1.1.2

  • WordPress の通知がプラグインのヘッダーを壊す問題を解決しました。
  • JSON の送信と解析の方法を変更しました。
  • 実行中のスキャンの再開ができるようになりました。
  • Safari に対応するため download.js を v4.2 に更新しました。

1.1.1

  • 実行中のジョブ表示のバグを解決しました。
  • プログレスバーの計算方法を更新しました。

1.1.0

  • テスト結果は、ページリロードしても残存します。
  • テストに失敗した結果について、概要が表示されます。
  • スキャン中にタイムアウトする事象について、絞り込みを設定することができるようになりました。詳細は FAQ を参照してください。

1.0.3

  • WP-CLI コマンドのバグを解決
  • ホワイトリストに PHP7 対応のプラグインを追加

1.0.2

  • 権限グループの保護をさらに追加しました。
  • 結果がより一目で分かるよう UI の色を変更しました。
  • node_modules と tmp ディレクトリをスキャンから除外しました。
  • 子テーマに関連する親テーマのスキャンに対応しました。

1.0.1

  • 互換性ライブラリにいくつかのバグ修正を加えて更新
  • チェックが途中で停止しないよう、スキップする処理を追加

1.0.0

  • PHP 7 サポートの確認を追加するためのメジャーアップデート
  • プログレスバーの UX を改善しました。
  • プラグインメニューの登録手順におけるバグを解決しました。

0.1.0

  • 最初のバージョン
  • PHP 5.5/5.4/5.3に対応しました。
  • 基本的な WP-CLI コマンド