Make WordPress Core

Opened 3 years ago

Closed 3 years ago

Last modified 3 years ago

#51629 closed defect (bug) (duplicate)

[php8] TypeError: call_user_func_array(): non-static method WP_Feed_Cache::create() cannot be called statically

Reported by: bph's profile bph Owned by:
Milestone: Priority: normal
Severity: normal Version: 5.6
Component: Feeds Keywords: php8 has-patch
Focuses: Cc:

Description (last modified by SergeyBiryukov)

Fatal error: Uncaught TypeError: call_user_func_array(): Argument #1 ($function) must be a valid callback, non-static method WP_Feed_Cache::create() cannot be called statically in /home/customer/www/icodeforapurpose.com/public_html/wp-includes/SimplePie/Registry.php:214

**StackTrace**

#0 /wp-includes/class-simplepie.php(1412): SimplePie_Registry->call('Cache', 'get_handler', Array) 
#1 /wp-includes/feed.php(821): SimplePie->init() 
#2 /wp-includes/widgets.php(1513): fetch_feed('https://wordpre...') 
#3 /wp-content/plugins/wordpress-beta-tester/src/WPBT/WP_Beta_Tester.php(288): wp_widget_rss_output('https://wordpre...', Array) 
#4 /wp-content/plugins/wordpress-beta-tester/src/WPBT/WP_Beta_Tester.php(256): WP_Beta_Tester->parse_development_feed('5.6') 
#5 /wp-admin/includes/template.php(1389): WP_Beta_Tester->beta_tester_dashboard('', Array) 
#6 /wp-admin/includes/dashboard.php(256): do_meta_boxes(Object(WP_Screen), 'normal', '') 
#7 /wp-admin/index.php(177): wp_dashboard() 
#8 {main} thrown in /wp-includes/SimplePie/Registry.php on line 214

Attachments (1)

51629.patch (541 bytes) - added by ayeshrajans 3 years ago.

Download all attachments as: .zip

Change History (15)

#2 @SergeyBiryukov
3 years ago

  • Component changed from General to Feeds
  • Description modified (diff)
  • Keywords php8 added
  • Milestone changed from Awaiting Review to 5.6
  • Summary changed from [php8] TypeError: call_user_func_array() to [php8] TypeError: call_user_func_array(): non-static method WP_Feed_Cache::create() cannot be called statically

#3 @ayeshrajans
3 years ago

In PHP 8.0 attempting to call a non-static as static causes fatal error in PHP 8.0. This was silenced with the @ operator which suppressed the PHP warning, but now that it's a type error, it bubbles up to the error handler.

From what I see, Cache::create method is moved to SimplePie_Cache::get_handle. I don't see why we can't rewrite the class to SimplePie_Cache. I will attach a patch, could you give it a try please? I suppose the fix should be sent to upstream SimplePie project before we make changes in core, or wait for a fix from the maintainers upstream.

@ayeshrajans
3 years ago

#4 @afragen
3 years ago

@ayeshrajans perhaps I'm incorrect but as SimplePie is an includes library and not native to WordPress I think the solution needs to be outside of the SimplePie framework.

#5 @ayeshrajans
3 years ago

@afragen - I think so too, I will try to submit a PR to upstream Simplepie. We already have an updated Simplepie version for WordPress 5.6, so a minor update would be nice if we could squeeze one in.

#7 @bph
3 years ago

I can confirm that @afragen's patch fixes this error.

This ticket was mentioned in Slack in #core by hellofromtonya. View the logs.


3 years ago

#9 @hellofromTonya
3 years ago

  • Keywords commit added; needs-testing removed

This ticket was mentioned in Slack in #core by jrf. View the logs.


3 years ago

This ticket was mentioned in Slack in #core by jrf. View the logs.


3 years ago

This ticket was mentioned in Slack in #core by sergey. View the logs.


3 years ago

This ticket was mentioned in Slack in #core by jrf. View the logs.


3 years ago

#14 @SergeyBiryukov
3 years ago

  • Keywords commit removed
  • Milestone 5.6 deleted
  • Resolution set to duplicate
  • Status changed from new to closed

Hi there, welcome to WordPress Trac! Thanks for the report.

This is more prominent with PHP 8, but is essentially the same issue as in #29204, let's continue there.

See comment:55:ticket:29204 for a detailed analysis.

Last edited 3 years ago by SergeyBiryukov (previous) (diff)
Note: See TracTickets for help on using tickets.