使WordPress成为核心

开的2年前

上次修改时间10个月前

#54943 新的 缺陷(bug)

image_get_intermediate_size():大小数据是bool,而不是数组抛出通知/警告

报告人: fhwebdesign的简介 fhweb设计 所有者:
里程碑: 等待审查 优先: 正常的
严重程度: 正常的 版本: 5.9
组件: 媒体 关键词: has-patch接口 报告人反馈 需求-测试-信息 需求-单元测试 请求的更改
重点: 复写的副本:

描述(上次修改者hellofrom托尼亚)

在PHP 8.0上测试我的网站时(在我打开博客页面的示例中),我注意到错误日志中有以下两个警告:

[2022年1月27日08:56:34]警告:[pool xxx]child 1031078在stderr中说:“PHP消息:PHP警告:试图访问第779行/var/ww/xxx/wp-includes/media.PHP中bool类型值的数组偏移量”[27-Jan-2022 08:56:34]警告:[pool xxx]child 1031078对stderr说:“PHP消息:PHP警告:试图访问第785行/var/www/xxx/wp includes/media.PHP中bool类型值的数组偏移量”

PHP 7.4抛出通知。

我还注意到新安装的wordpress。

更改历史记录(9)

#1个 @谢尔盖·比尤科夫
2年以前

  • 组件已从更改概述媒体
  • 关键词 第8页已添加
  • 总结已从更改PHP上的PHP警告>=8PHP上image_get_intermediate_size()中的PHP警告>=8

#2 @fhweb设计
23个月以前

JFYI:6.0.1上仍存在问题

这张票是在采购订单号3143WordPress/WordPress-develop开发通过塔布里斯普.


22个月以前
#3

  • 关键词 has-patch接口补充;需要-补丁远离的

在foreach循环中使用大小数据时,没有检查它是否是预期的数组,也没有检查宽度高度钥匙。

也重命名为$数据变量为$大小数据,作为已经作为$数据之前声明的变量包含不同的值,可能会造成混淆。

Trac票:https://core.trac.wordpress.org/ticket/54943

#4 @马里扎21
15个月以前

https://tlp-guild.com/wp-content/uploads/Screenshot-2023-02-28-200122.png

我还在8.0及以上版本中收到此警告错误。

#5 @hellofrom托尼亚
14个月以前

  • 关键词 电话80补充;第8页远离的

#6 @hellofrom托尼亚
10个月以前

  • 关键词 报告人反馈已添加
  • 类型已从更改增强缺陷(bug)

您好,@fhwebdesign,

欢迎使用WordPress Core的Trac!感谢您报告您遇到的问题。很抱歉,花了这么长时间才用这张票欢迎你。

我将从您的支持论坛报告帮助贡献者调查此问题:

  • 发生在克隆的WP站点上,没有插件,使用TT2(Twenty-Twenty Two主题):

    所以我克隆了我的网站,停用了所有插件,将主题切换到了二十二岁,然后再次尝试。

  • 不适用于没有图像或内容的新安装。

    全新的WordPress安装不会引发此警告。
    没有,没有加载图像和页面/帖子。

我正在评估此问题,以确定它是否可能是Core中的PHP8.0兼容性问题。

您报告的PHP 8.0中的警告是PHP 7.4中的通知。警告和通知提醒开发人员出现问题。

有问题的代码期望这个“大小”元素为阵列如中所述wp_get_attachment_metadata():

*@return数组|false{*附件元数据。失败时为False。**@type int$width附件的宽度。*@type int$height附件的高度。*@type string$file相对于“wp-content/uploads”的文件路径。*@type array$sizes键是size slug,每个值都是一个包含*“file”、“width”、“height”和“mime type”。*@type数组$image_meta图像元数据。*@type int$filesize附件的文件大小。* }*/函数wp_get_attachment_metadata($attachment_id=0,$unfiltered=false){

参考:https://developer.wordpress.org/reference/functions/wp_get_attachment_metadata/

我想知道:为什么附件没有尺寸?问题可能是与过滤器挂钩的回调吗?或者元数据不完整?还是在添加或编辑附件时发生了什么?

@fhwebdesign你能分享一下如何重现问题的步骤吗?它会发生在特定的上传附件上吗,比如一张图片?你的网站上还出现这种情况吗?

您可以提供的任何其他信息都有助于像我这样的贡献者进一步调查,以确定根本原因是否在WordPress核心源代码中。

#7 @hellofrom托尼亚
10个月以前

  • 关键词 需求-测试-信息 需求-单元测试 请求的更改已添加

为添加关键字补丁附在这张票上。

#8 @hellofrom托尼亚
10个月以前

添加历史/上下文参考:

2.5.0期间,功能图像获取中间介质大小():

  • 已在变更集中添加[7135].
  • 这个foreach公司迭代$imagedata[“大小”]已添加到变更集中[7263],预期大小数据为数组:
    foreach($imagedata['sizes']作为$_size=>$data){if(($data['width']==$size[0]&&$data['高度]<=$size[1])||($data[高度]==$大小[1]&&$数据['宽度]<=$大小[0]){

引发警告/通知的代码应为阵列自WP 2.5.0起,每种尺寸均为。此代码从未进行过防御检查以确保$数据是检查前的数组$data['width'].

因此,我认为根本原因不是图像获取中间介质大小(),但在其他地方。

我还想知道这个问题是否不是5.9.0中介绍的???

#9 @hellofrom托尼亚
10个月以前

  • 描述修改(差异)
  • 关键词 电话80远离的
  • 总结已从更改PHP上image_get_intermediate_size()中的PHP警告>=8image_get_intermediate_size():大小数据是bool,而不是数组抛出通知/警告

我改写了摘要,以更好地反映所报告的问题,同时将重点放在错误发生的位置(虽然可能不是根本原因)。

我还删除了电话80关键字。为什么?报告的问题不仅与PHP 8.0有关。PHP 7上会抛出一个通知。相反,问题是:由于某种原因,一个或多个附件没有大小数据。

查看不同PHP版本上的操作错误:https://3v4l.org/FBhtS网站

注:请参见TracTickets公司有关使用的帮助门票。