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

Azure App Service中PHP应用无法上传2MB以上文件求助

解决Azure App Service PHP 8.2应用上传文件超2MB报413错误的方案

问题核心原因

Azure App Service for Linux的/etc目录属于临时存储,重启后会重置默认配置;同时自定义PHP配置文件的放置位置不符合平台加载规则,导致之前的修改无法持久生效。

具体解决步骤

1. 持久化配置Nginx上传大小限制

创建startup.sh脚本并放到应用根目录,内容如下:

#!/bin/bash
# 将nginx上传配置写入持久化目录
echo "client_max_body_size 5M;" > /home/site/nginx/upload.conf
# 建立软链接到nginx配置目录,确保重启后配置不丢失
ln -sf /home/site/nginx/upload.conf /etc/nginx/conf.d/upload.conf
# 重启服务使配置生效
service nginx reload
service php8.2-fpm restart

然后在Azure门户的应用服务→配置→常规设置中,将启动命令设置为:./startup.sh

2. 配置PHP上传参数(两种方式选其一)

方式一:用自定义php.ini文件

  • 在应用的/home/site目录下创建ini文件夹
  • 将你的自定义php.ini上传到/home/site/ini目录,内容保持不变:
upload_max_filesize = 5M
post_max_size = 5M
max_execution_time = 300
max_input_time = 300
memory_limit = 128M
  • 在应用服务→配置→应用设置中添加一条配置:
    PHP_INI_SCAN_DIR = /usr/local/etc/php/conf.d:/home/site/ini

方式二:直接通过应用设置配置(更简便)

在应用服务→配置→应用设置中添加以下键值对:

  • PHP_UPLOAD_MAX_FILESIZE = 5M
  • PHP_POST_MAX_SIZE = 5M
  • PHP_MAX_EXECUTION_TIME = 300
  • PHP_MAX_INPUT_TIME = 300
  • PHP_MEMORY_LIMIT = 128M

3. 检查前端代理/CDN限制

如果应用前端搭配了Azure Front Door、CDN或其他反向代理,需要同步调整这些服务的最大请求体大小,避免前端提前拦截大文件上传请求。

验证配置有效性

  • 重启应用服务使所有配置生效
  • 上传3-5MB的测试文件验证是否成功
  • 通过SSH连接应用后,可执行nginx -T | grep client_max_body_size确认Nginx配置;执行php -i | grep upload_max_filesize确认PHP配置是否生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 12:33:16