Wp-rocket: 更新時にPHPが通知

作成日 2020年03月17日  ·  5コメント  ·  ソース: wp-media/wp-rocket

バグを説明する
更新プロセス中に、2つのPHP通知がログに表示されました。

[17-Mar-2020 13:37:45 UTC] PHP Notice:  Undefined variable: home_root_escaped in /****/wp-content/plugins/wp-rocket/inc/functions/options.php on line 252
[17-Mar-2020 13:37:45 UTC] PHP Stack trace:
[17-Mar-2020 13:37:45 UTC] PHP   1. {main}() /****/wp-admin/admin-ajax.php:0
[17-Mar-2020 13:37:45 UTC] PHP   2. do_action() /****/wp-admin/admin-ajax.php:45
[17-Mar-2020 13:37:45 UTC] PHP   3. WP_Hook->do_action() /****/wp-includes/plugin.php:478
[17-Mar-2020 13:37:45 UTC] PHP   4. WP_Hook->apply_filters() /****/wp-includes/class-wp-hook.php:312
[17-Mar-2020 13:37:45 UTC] PHP   5. rocket_upgrader() /****/wp-includes/class-wp-hook.php:288
[17-Mar-2020 13:37:45 UTC] PHP   6. flush_rocket_htaccess() /****/wp-content/plugins/wp-rocket/inc/admin/upgrader.php:27
[17-Mar-2020 13:37:45 UTC] PHP   7. get_rocket_htaccess_marker() /****/wp-content/plugins/wp-rocket/inc/functions/htaccess.php:56
[17-Mar-2020 13:37:45 UTC] PHP   8. get_rocket_htaccess_mod_rewrite() /****/wp-content/plugins/wp-rocket/inc/functions/htaccess.php:148
[17-Mar-2020 13:37:45 UTC] PHP   9. get_rocket_cache_reject_uri() /****/wp-content/plugins/wp-rocket/inc/functions/htaccess.php:271
[17-Mar-2020 13:37:45 UTC] PHP Notice:  Undefined variable: home_root_len in /****/wp-content/plugins/wp-rocket/inc/functions/options.php on line 254
[17-Mar-2020 13:37:45 UTC] PHP Stack trace:
[17-Mar-2020 13:37:45 UTC] PHP   1. {main}() /****/wp-admin/admin-ajax.php:0
[17-Mar-2020 13:37:45 UTC] PHP   2. do_action() /****/wp-admin/admin-ajax.php:45
[17-Mar-2020 13:37:45 UTC] PHP   3. WP_Hook->do_action() /****/wp-includes/plugin.php:478
[17-Mar-2020 13:37:45 UTC] PHP   4. WP_Hook->apply_filters() /****/wp-includes/class-wp-hook.php:312
[17-Mar-2020 13:37:45 UTC] PHP   5. rocket_upgrader() /****/wp-includes/class-wp-hook.php:288
[17-Mar-2020 13:37:45 UTC] PHP   6. flush_rocket_htaccess() /****/wp-content/plugins/wp-rocket/inc/admin/upgrader.php:27
[17-Mar-2020 13:37:45 UTC] PHP   7. get_rocket_htaccess_marker() /****/wp-content/plugins/wp-rocket/inc/functions/htaccess.php:56
[17-Mar-2020 13:37:45 UTC] PHP   8. get_rocket_htaccess_mod_rewrite() /****/wp-content/plugins/wp-rocket/inc/functions/htaccess.php:148
[17-Mar-2020 13:37:45 UTC] PHP   9. get_rocket_cache_reject_uri() /****/wp-content/plugins/wp-rocket/inc/functions/htaccess.php:271

再現するには

  1. 古いバージョンのWPロケットをインストールします
  2. ログファイルをクリアします
  3. プラグインを更新します

予想される行動
ログファイルに新しい行はありません。

追加のコンテキスト

  • WPRを3.4.4から3.5.0.3に更新していました
  • WordPress 5.3.2

バックロググルーミング

  • [x]問題を再現する
  • [x]根本原因を特定する
  • [x]ソリューションのスコープ
  • [x]労力を見積もる
[S] low bug

全てのコメント5件

根本原因を特定する✅
inc/functions/options.php - get_rocket_cache_reject_uri()関数
根本的な原因は、

        $home_root_escaped = preg_quote( $home_root, '/' );
        $home_root_len     = strlen( $home_root );

これはif条件で行われます:
if ( '' !== $home_root && $uris ) {
これらの変数は以下で使用されており、定義されていないようです。
https://github.com/wp-media/wp-rocket/blob/8b2a567efcab3925dba6fff72c5a622ec2d16386/inc/functions/options.php#L198 -L199

ソリューションのスコープ✅
解決策は、これら2つの変数の宣言をこの関数でグローバルに移動することです。

労力を見積もる✅
尽力]
努力はユニットと統合テストに行きます。

mega/Divi問題に気づきましたが、プリロードを有効にすることで問題を再現できます。

@GeekPress @hellofromtonyaこの問題の優先度を上げましょうか? 些細なことですが、私たちはそれを知っていて、修正するのが簡単なので、これをコードに常駐させてはいけないと感じています。

@arunbasillal優先度は、問題の重要度に応じて設定されます。 これは重要ではなく、次の理由で「低」になります。

  • エラーはログにのみ表示されます
  • それは私たちの機能の1つを壊しません
  • この問題に関するチケットの数は非常に少ないです

関連チケット: https ://secure.helpscout.net/conversation/1171062698/166759 = 273764#thread -3340520759

関連チケット:
https://secure.helpscout.net/conversation/1238067915/183094/

プラグインを有効にすると、このエラーがログに記録されます。
[01-Aug-2020 11:54:49 UTC] PHP Notice Undefined variable: home_root_len in /var/www/vhosts/managed.hosting.com/managed.hosting.com/site/wp-content/plugins/wp-rocket/inc/functions/options.php on line 261

このページは役に立ちましたか?
0 / 5 - 0 評価