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

使用Dokku部署Laravel应用时上传大文件提示Payload too large的解决方法

解决Dokku部署Laravel大文件上传的"Payload too large"问题

1. 配置应用级Nginx参数(优先级高于全局)

Dokku每个应用有独立的Nginx配置,全局修改可能被应用配置覆盖。在本地项目根目录创建nginx.conf.sigil文件,添加以下内容:

server {
  listen      [::]:{{ .NGINX_PORT }};
  listen      {{ .NGINX_PORT }};
  server_name {{ .NGINX_HOST }};
  client_max_body_size 300M; # 匹配你的最大上传文件大小

  {{ include "nginx.conf.template" . }}
}

然后将文件推送到Dokku服务器:

git add nginx.conf.sigil
git commit -m "Increase upload max body size"
git push dokku main

推送后Dokku会自动重建应用的Nginx配置。

2. 修改PHP-FPM配置

Laravel依赖PHP-FPM,需要调整PHP的上传相关参数:

  • 通过Dokku环境变量设置(推荐):
dokku config:set your-app-name PHP_UPLOAD_MAX_FILESIZE=300M PHP_POST_MAX_SIZE=300M PHP_MAX_EXECUTION_TIME=300 PHP_MAX_INPUT_TIME=300
  • 或者自定义php.ini文件:在项目根目录创建.user.ini,添加:
upload_max_filesize = 300M
post_max_size = 300M
max_execution_time = 300
max_input_time = 300

同样提交并推送到Dokku。

3. 调整Laravel应用内部配置

  • 检查表单验证规则:确保上传字段的验证规则没有限制过小的大小,比如:
// 在表单请求类中
public function rules()
{
    return [
        'file' => 'required|file|max:307200', // 300MB = 300*1024 KB
    ];
}
  • 确认文件系统配置:config/filesystems.php中没有额外的上传限制,默认Laravel不限制,除非自定义了逻辑。

4. 重启相关服务(确保配置生效)

如果上述配置后仍有问题,手动重启Dokku的Nginx和应用的PHP-FPM服务:

# 重启Dokku Nginx服务
sudo service nginx restart

# 重启你的应用
dokku ps:restart your-app-name

验证配置是否生效

可以通过以下方式确认参数是否正确加载:

  • 查看Nginx配置:dokku nginx:show-config your-app-name,检查是否包含client_max_body_size 300M;
  • 在Laravel中创建一个phpinfo路由,查看PHP的upload_max_filesize、post_max_size等参数是否正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 03:43:09