Livewire报Content Too Large错误 15MB以上大文件无法上传
Livewire 大文件上传失败排查解决步骤
1. 修复配置结构错误
你贴出的配置存在语法断裂问题,rules 配置项被错误放在了temporary_file_upload数组外部,这会直接导致配置规则不生效,先修正配置结构,参考正确片段如下:
'temporary_file_upload' => [ 'disk' => null, // 可选择local、s3等磁盘,默认用default 'rules' => ['required', 'file', 'max:20480'], // max单位为KB,20480对应20MB,按需调整数值 'directory' => null, // 临时文件目录,默认是livewire-tmp 'middleware' => null, // 上传路由中间件,默认是throttle:60,1 'preview_mimes' => [ // 支持预签名预览的文件类型 'png', 'gif', 'bmp', 'svg', 'wav', 'mp4', 'mov', 'avi', 'wmv', 'mp3', 'm4a', 'jpg', 'jpeg', 'mpga', 'webp', 'wma', ], 'max_upload_time' => 60, // 临时文件最大有效时长,单位分钟 ],
注意:不要搞错
max参数的单位,Laravel文件验证规则的max单位是千字节(KB),不是字节。如果要支持100MB文件上传,max值设为102400即可。
2. 修改PHP系统级上传限制
Livewire的配置不会覆盖php.ini的核心限制,这是改完框架配置仍上传失败的最高频原因。找到你环境对应的php.ini文件,修改以下三个参数,确保数值大于你需要支持的最大文件大小:
upload_max_filesize:单文件最大上传大小,建议设为128Mpost_max_size:POST请求总大小,必须大于upload_max_filesize,建议设为192Mmemory_limit:PHP进程可用内存,必须大于post_max_size,建议设为256M
修改完成后必须重启PHP运行服务(php-fpm、Apache模块等),配置才会生效。
3. 修改Web服务器上传限制
Web服务器默认也有上传大小限制,需要同步修改:
- 使用Nginx的场景:在对应站点的配置文件中添加
client_max_body_size 128M;,Nginx默认该值仅为1M,很容易拦截大文件上传,修改后重启Nginx生效。 - 使用Apache的场景:在站点配置或项目根目录的
.htaccess中添加LimitRequestBody 134217728(单位为字节,128MB对应这个数值),修改后重启Apache生效。
4. 排查缓存与组件规则冲突
- 如果你在Livewire组件类里单独定义了
$rules验证属性,组件内的规则优先级高于全局配置,要确保对应上传字段的max参数也设置为你需要的数值。 - 如果你开启了Laravel配置缓存,修改完
config/livewire.php后,在项目根目录执行php artisan config:clear清除配置缓存,避免旧配置持续生效。
内容的提问来源于stack exchange,提问作者Sagar_rathod
相关产品推荐
相关产品推荐

