WordPress上传SVG文件变为22字节空文件问题求助
解决WordPress上传SVG后变为空文件的问题
检查服务器端SVG过滤规则
部分主机商会通过ModSecurity、.htaccess规则或服务器配置拦截/清理SVG内容:- 若主机支持(如cPanel),临时禁用ModSecurity后重新上传测试。
- 查看网站根目录的
.htaccess文件,排查是否存在针对SVG的限制规则(如RewriteRule \.svg$ - [F,L]),暂时注释后测试。
验证SVG文件合法性
确保SVG无语法错误,部分不规范的SVG会被服务器或插件误判清理。可使用W3C SVG验证工具检查文件,修复问题后再上传。更换SVG处理插件
替换Safe SVG,尝试使用SVG Support插件,开启允许上传SVG的选项后测试。不同插件的过滤逻辑存在差异,可能避开当前问题。手动添加SVG上传支持(绕过插件)
在主题functions.php或自定义插件中添加以下代码,直接允许SVG上传并关闭默认内容过滤:function allow_svg_uploads( $mimes ) { $mimes['svg'] = 'image/svg+xml'; return $mimes; } add_filter( 'upload_mimes', 'allow_svg_uploads' ); function disable_svg_filter( $data, $file, $filename, $mimes ) { if ( substr( $filename, -4 ) === '.svg' ) { $data['ext'] = 'svg'; $data['type'] = 'image/svg+xml'; } return $data; } add_filter( 'wp_check_filetype_and_ext', 'disable_svg_filter', 10, 4 );修改前请备份主题文件,避免出错。
检查上传目录权限
确认wp-content/uploads目录权限为755,文件权限为644。权限异常可能导致文件上传不完整,可通过FTP或主机控制面板调整。排查服务器资源限制
检查php.ini中的upload_max_filesize、post_max_size、memory_limit参数,确保数值足够(如设置为64M以上)。若无法自行修改,可联系主机商调整。
内容的提问来源于stack exchange,提问作者Abbas Hosseini
相关产品推荐
相关产品推荐

