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

Azure App Service下Nginx环境Laravel大文件上传报错排查

解决Azure中PHP 8 + NGINX大文件上传失败问题

问题根源分析

从你提供的UploadedFile实例中error: 1可以明确,这对应PHP的UPLOAD_ERR_INI_SIZE错误——上传文件大小超过了PHP核心配置的限制,和你已经设置的NGINXclient_max_body_size无关(小文件上传正常也验证了NGINX的限制配置生效)。

解决方案步骤

1. 调整PHP核心配置参数

需要修改php.ini中的以下关键参数(Azure环境有专属配置方式,无需直接编辑文件,见下一步):

  • upload_max_filesize = 100M:单个上传文件的最大限制,设置为大于你测试的5.7M即可
  • post_max_size = 120M:POST请求的总大小限制,必须大于upload_max_filesize,因为POST请求包含文件和其他表单数据
  • max_execution_time = 300:脚本执行最长时间,大文件上传可能需要更长处理时长
  • max_input_time = 300:处理输入数据的最长时间

2. Azure环境的具体配置方式

若使用Azure App Service:

  • 登录Azure门户,进入你的App Service实例
  • 左侧导航选择「配置」→「常规设置」
  • 在「PHP版本」区域,找到「上传限制」,设置为你需要的数值(比如100MB)
  • 或者通过「应用设置」添加自定义PHP配置项:
    • 添加应用设置:PHP_INI_UPLOAD_MAX_FILESIZE,值设为100M
    • 添加应用设置:PHP_INI_POST_MAX_SIZE,值设为120M
  • 保存配置后,应用服务会自动重启,新配置生效

若使用Azure VM自建环境:

  • 执行php --ini命令定位php.ini文件路径
  • 编辑该文件,修改上述参数
  • 重启PHP-FPM服务(命令示例:service php8.0-fpm restart,根据你的PHP版本调整)
  • 重启NGINX服务(service nginx restart)

3. 验证配置是否生效

创建一个phpinfo.php文件,内容如下:

<?php phpinfo(); ?>

访问该文件,搜索upload_max_filesize和post_max_size,确认数值已更新为你设置的值。

4. 额外检查项

  • 确认PHP临时目录权限:默认临时目录为/tmp,Azure环境下默认配置拥有读写权限,无需额外修改
  • 在Laravel代码中提前校验文件有效性:
    if (!$request->file('file')->isValid()) {
        // 输出错误码,确认问题类型
        dd($request->file('file')->getError());
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 09:10:36