Livewire上传大于10MB文件报Permission denied错误 小文件正常怎么解决
1 Windows目录权限排查
- 确认
storage\app\public\livewire-tmp目录权限,给Web服务运行用户(如Nginx对应的运行用户、PHP-FPM运行用户)授予完全控制权限,同时检查目录是否开启了压缩、加密属性,Windows下开启该属性的目录写入大文件时容易触发权限异常。 - 可手动在
livewire-tmp目录下创建一个大于10MB的测试文件,验证对应用户可正常写入,排除基础权限问题。
2 Nginx配置排查
- 检查Nginx的
client_max_body_size配置,该参数默认值通常为1M或10M,超过大小的上传请求会被Nginx直接拦截,导致后续Livewire写入临时文件异常。需要在nginx.conf的http块、对应站点的server块或location块中添加配置client_max_body_size 256M;,修改后重启Nginx生效。
3 Livewire配置修正
- 当前配置的上传大小规则
max:12282228单位为KB,已满足250MB上传需求,可调整为更精准的max:256000(对应250MB)避免不必要的资源浪费。 - 显式指定临时上传磁盘与目录,避免默认配置异常,修改
config/livewire.php对应配置如下:
'temporary_file_upload' => [ 'disk' => 'local', 'rules' => ['file', 'max:256000'], 'directory' => 'livewire-tmp', ],
修改完成后执行php artisan config:cache重新加载配置。
4 PHP配置补充排查
- 检查php.ini中
upload_tmp_dir对应目录的权限,大文件上传时会先写入该PHP临时目录再移动到Livewire临时目录,若该目录无读写权限也会触发写入失败。若未显式配置该参数,默认使用Windows系统临时目录C:\Windows\Temp,需同步检查该目录的权限。 - 调整PHP超时配置,大文件上传耗时更长,将
max_execution_time、max_input_time均调整为300及以上,避免PHP进程被提前终止导致临时文件不完整。
5 安全软件拦截排查
- Windows环境下的防病毒软件、系统安全防护规则通常会对大于特定大小的临时目录写入操作做扫描拦截,可临时关闭安全软件,或将
livewire-tmp目录、PHP临时目录加入安全软件白名单后测试上传是否正常。
6 版本兼容性排查
- 若以上配置均无问题,可将Livewire升级到最新稳定版本,部分旧版本Livewire在Windows环境下的临时文件写入逻辑存在已知权限相关bug。
内容的提问来源于stack exchange,提问作者loomy
相关产品推荐
相关产品推荐

