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 Rocket
  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 个变量的声明移动到此函数中的全局范围内。

估计努力✅
努力:[S]
这项工作将用于单元和集成测试。

我刚刚注意到mega/Divi ,我可以通过启用预加载来复制它。

@GeekPress @hellofromtonya我们要不要提高这个问题的优先级? 这是微不足道的,但既然我们知道它并且因为它很容易修复,我觉得我们不应该让它存在于我们的代码中。

@arunbasillal根据问题的严重程度设置优先级。 这个并不重要,并且会“低”,因为:

  • 错误仅显示在日志中
  • 它不会破坏我们的功能之一
  • 关于这个问题的票数非常少

相关票证: 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 等级