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
相关产品推荐
相关产品推荐

