TypeError: Unsupported operand types: string * float
-
We’re getting a lot of errors on a page during and after saving and I’ve managed to track it down to the custom image size functionality.
PHP Fatal error: Uncaught TypeError: Unsupported operand types: string * float in /site-path/wp-includes/media.php:467 Stack trace: #0 /site-path/wp-includes/media.php(714): wp_constrain_dimensions('1000', '', 300) #1 /site-path/wp-includes/media.php(1376): wp_image_matches_ratio(300, 300, '1000', '') #2 /site-path/wp-includes/media.php(1067): wp_calculate_image_srcset(Array, 'https://www.sit...', Array, 46296) #3 /site-path/wp-content/plugins/elementor/includes/controls/groups/image-size.php(108): wp_get_attachment_image(46296, 'square-sm', false, Array) #4 /site-path/wp-content/plugins/elementor/includes/controls/groups/image-size.php(156): Elementor\\Group_Control_Image_Size::get_attachment_image_html(Array, 'image', 'image') #5 /site-path/wp-content/plugins/elementor/includes/widgets/image.php(701): Elementor\\Group_Control_Image_Size::print_attachment_image_html(Array) #6 /site-path/wp-content/plugins/elementor/includes/base/controls-stack.php(2223): Elementor\\Widget_Image->render() #7 /site-path/wp-content/plugins/elementor/includes/base/widget-base.php(609): Elementor\\Controls_Stack->render_by_mode() #8 /site-path/wp-content/plugins/elementor/includes/base/widget-base.php(750): Elementor\\Widget_Base->render_content() #9 /site-path/wp-content/plugins/elementor/includes/base/element-base.php(447): Elementor\\Widget_Base->print_content() #10 /site-path/wp-content/plugins/elementor/includes/base/element-base.php(787): Elementor\\Element_Base->print_element() #11 /site-path/wp-content/plugins/elementor/includes/base/element-base.php(447): Elementor\\Element_Base->print_content() #12 /site-path/wp-content/plugins/elementor/includes/base/element-base.php(787): Elementor\\Element_Base->print_element() #13 /site-path/wp-content/plugins/elementor/includes/base/element-base.php(447): Elementor\\Element_Base->print_content() #14 /site-path/wp-content/plugins/elementor/core/base/document.php(1627): Elementor\\Element_Base->print_element() #15 /site-path/wp-content/plugins/elementor/core/base/document.php(1078): Elementor\\Core\\Base\\Document->print_elements(Array) #16 /site-path/wp-content/plugins/elementor/includes/frontend.php(1092): Elementor\\Core\\Base\\Document->print_elements_with_wrapper(Array) #17 /site-path/wp-content/plugins/elementor/includes/frontend.php(1006): Elementor\\Frontend->get_builder_content(24) #18 /site-path/wp-includes/class-wp-hook.php(307): Elementor\\Frontend->apply_builder_in_content('<a href="https:...') #19 /site-path/wp-includes/plugin.php(189): WP_Hook->apply_filters('<a href="https:...', Array) #20 /site-path/wp-includes/post-template.php(253): apply_filters('the_content', '<a href="https:...') #21 /site-path/wp-content/themes/hello-elementor/template-parts/single.php(24): the_content() #22 /site-path/wp-includes/template.php(772): require('/nas/content/li...') #23 /site-path/wp-includes/template.php(716): load_template('/nas/content/li...', false, Array) #24 /site-path/wp-includes/general-template.php(204): locate_template(Array, true, false, Array) #25 /site-path/wp-content/themes/site/index.php(23): get_template_part('template-parts/...') #26 /site-path/wp-includes/template-loader.php(106): include('/nas/content/li...') #27 /site-path/wp-blog-header.php(19): require_once('/nas/content/li...') #28 /site-path/index.php(17): require('/nas/content/li...') #29 {main} thrown in /site-path/wp-includes/media.php on line 467, referer: https://www.google.com/
That error shows up in logs multiple times. Every time it does, the page with a custom image can’t load. The attachment on that page with a custom image size has
wp_attachment_metadata
like this:a:5:{s:5:"width";i:1580;s:6:"height";i:1419;s:4:"file";s:40:"image0000000000000000-e1660655486567.png";s:5:"sizes";a:13:{s:6:"medium";a:4:{s:4:"file";s:48:"image0000000000000000-e1660655486567-600x539.png";s:5:"width";i:600;s:6:"height";i:539;s:9:"mime-type";s:9:"image/png";}s:5:"large";a:4:{s:4:"file";s:49:"image0000000000000000-e1660655486567-1024x920.png";s:5:"width";i:1024;s:6:"height";i:920;s:9:"mime-type";s:9:"image/png";}s:9:"thumbnail";a:4:{s:4:"file";s:48:"image0000000000000000-e1660655486567-150x150.png";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:9:"image/png";}s:12:"medium_large";a:4:{s:4:"file";s:48:"image0000000000000000-e1660655486567-768x690.png";s:5:"width";i:768;s:6:"height";i:690;s:9:"mime-type";s:9:"image/png";}s:9:"1536x1536";a:4:{s:4:"file";s:50:"image0000000000000000-e1660655486567-1536x1379.png";s:5:"width";i:1536;s:6:"height";i:1379;s:9:"mime-type";s:9:"image/png";}s:8:"square-1";a:4:{s:4:"file";s:48:"image0000000000000000-e1660655486567-600x600.png";s:5:"width";i:600;s:6:"height";i:600;s:9:"mime-type";s:9:"image/png";}s:9:"square-sm";a:4:{s:4:"file";s:48:"image0000000000000000-e1660655486567-300x300.png";s:5:"width";i:300;s:6:"height";i:300;s:9:"mime-type";s:9:"image/png";}s:4:"hero";a:4:{s:4:"file";s:49:"image0000000000000000-e1660655486567-1580x650.png";s:5:"width";i:1580;s:6:"height";i:650;s:9:"mime-type";s:9:"image/png";}s:6:"hero-2";a:4:{s:4:"file";s:49:"image0000000000000000-e1660655486567-1580x285.png";s:5:"width";i:1580;s:6:"height";i:285;s:9:"mime-type";s:9:"image/png";}s:11:"rectangle-1";a:4:{s:4:"file";s:49:"image0000000000000000-e1660655486567-1250x715.png";s:5:"width";i:1250;s:6:"height";i:715;s:9:"mime-type";s:9:"image/png";}s:22:"elementor_custom_1000x";a:4:{s:4:"file";s:100:"elementor/thumbs/image0000000000000000-e1660655486567-ptcm6medbaeeyeubhlaq2jas05bfh4djloprt7gv84.png";<strong>s:5:"width";s:4:"1000";s:6:"height";s:0:""</strong>;s:9:"mime-type";s:9:"image/png";}s:24:"elementor_custom_200x200";a:4:{s:4:"file";s:85:"elementor/thumbs/image0000000000000000-pt6fm9eotlx6xjdr358fscz45y10vwx18oukv6wvkg.png";s:5:"width";i:200;s:6:"height";i:200;s:9:"mime-type";s:9:"image/png";}s:21:"elementor_custom_200x";a:4:{s:4:"file";s:100:"elementor/thumbs/image0000000000000000-e1660655486567-ptcm6me3kg7hr4aquvt1er7ys780e6h9b7z2tnups8.png";<strong>s:5:"width";s:3:"200";s:6:"height";s:0:""</strong>;s:9:"mime-type";s:9:"image/png";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}
Did some digging and it appears that in
elementor/includes/managers/image.php
a regex is pulling width and height out of a custom image size name, then feeding that directly into the array that goes into the database.The problem seems to be that it’s inserting strings there, and not converting to numbers.
Site’s running Elementor 3.7.1 right now and PHP 8.0 as of last week, so maybe it’s a little more strict with the variable types than it used to be. Or maybe WP Engine has a weird PHP configuration. Either way, lines 96 and 97 might just need a couple quick
(int)
s inserted in there to make sure it’s never sending in strings.Thanks!
- The topic ‘TypeError: Unsupported operand types: string * float’ is closed to new replies.