如果您通过File Upload Types或子比主题上传[文件格式]限制等功能放行了某种后缀的文件名上传,但是修改后去上传文件依然出现出现 抱歉,您不能上传此文件类型。这个提示,那是因为新版的WordPress加强了文件上传安全审查。解决办法如下:
方法一:通过代码放宽 WordPress 对未知/非常用文件类型的严格校验 (推荐此方法)
请将以下完整代码放入当前主题的 functions.php 中
// 自动放行绝大多数常见及冷门的下载文件类型,不因 Fileinfo 校验失败而拦截
add_filter( 'wp_check_filetype_and_ext', function( $data, $file, $filename, $mimes ) {
// 如果 WordPress 已经精准识别了,就按原样返回
if ( ! empty( $data['ext'] ) && ! empty( $data['type'] ) ) {
return $data;
}
// 获取文件扩展名
$ext = strtolower( pathinfo( $filename, PATHINFO_EXTENSION ) );
// 你可以把常用于下载的扩展名写在这里(或者直接全放行)
$allowed_extensions = array( 'esd', 'gho', 'iso', 'wim', 'img', 'apk', 'ipa', 'dmg', 'pkg', 'deb', 'rpm', '7z', 'rar', 'tar', 'gz' );
if ( in_array( $ext, $allowed_extensions ) ) {
$data['ext'] = $ext;
$data['type'] = 'application/octet-stream';
$data['proper_filename'] = $filename;
}
return $data;
}, 10, 4 );
方法二:卸载php的Fileinfo 扩展(不推荐)
新版的WordPress使用Fileinfo来判断文件的真实文件类型,当文件扩展名不在WordPress默认白名单内时,就会出现抱歉,您不能上传此文件类型。卸载或不安装Fileinfo会让WordPress使用旧版安全策略,无法判断文件名的真实扩展名,会存在安全问题,比如说用户将 PHP 木马改名为 .jpg 或 .png 来突破上传的核心安全防线。
THE END









暂无评论内容