You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Timber框架ImageHelper.php触发致命错误,作者页面无法访问求助

修复Timber sideload_image 函数的PHP 8.0类型错误

问题根源

PHP 8.0启用了严格的参数类型检查,当download_url()下载外部图片失败时,会返回WP_Error对象而非字符串。原代码直接将这个错误对象赋值给$file_array['tmp_name'],随后传入unlink()函数,违反了该函数要求参数为字符串的类型约束,触发致命错误。

修复方案

修改timber/lib/ImageHelper.php中对应错误处理逻辑,确保仅向unlink()传入合法字符串参数:

方案一:增加类型判断

// If error storing temporarily, unlink
if ( is_wp_error($tmp) ) {
    // 仅当tmp_name为有效字符串时执行删除操作
    if ( is_string($file_array['tmp_name']) ) {
        @unlink($file_array['tmp_name']);
    }
    $file_array['tmp_name'] = '';
}

方案二:提前规避错误赋值

$tmp = download_url($file);
preg_match('/[^\?]+\.(jpe?g|jpe|gif|png)\b/i', $file, $matches);
$file_array = array();
$file_array['name'] = basename($matches[0]);

// 仅当下载成功时才赋值临时文件路径
if ( !is_wp_error($tmp) ) {
    $file_array['tmp_name'] = $tmp;
} else {
    $file_array['tmp_name'] = '';
}

// If error storing temporarily, unlink
if ( is_wp_error($tmp) ) {
    $file_array['tmp_name'] = '';
}

额外排查建议

  • 检查作者页面调用的图片资源(如作者头像)URL是否有效,错误可能源于尝试下载不存在或无法访问的外部图片。
  • 查看Timber官方更新日志,确认后续版本是否已修复该PHP 8兼容性问题。

内容的提问来源于stack exchange,提问作者hello_sunshine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 22:50:39