商城首页欢迎来到中国正版软件门户

您的位置:首页 >PHP限制上传大小设置方法

PHP限制上传大小设置方法

  发布于2026-02-24 阅读(0)

扫一扫,手机访问

PHP 文件上传需同步调整 PHP 的 upload_max_filesize、post_max_size 和 max_execution_time 三个参数,并配置 Nginx 的 client_max_body_size 或 Apache 的 .htaccess,否则仍会因任一环节限制导致 413 错误或上传中断。

php动态网站开发如何限制上传大小_PHP动态网站上传限制法【方案】

PHP 动态网站上传文件大小受限,不是单靠改一个配置就能生效的,必须同时调整 PHP 层和 Web 服务器层的多个参数,否则会出现“明明改了 upload_max_filesize 却还是传不过 2MB”的情况。

PHP 配置项必须同步修改的三个关键参数

只改 upload_max_filesize 是无效的。它只控制单个文件上限,但还受另外两个参数制约:

  • post_max_size:必须 ≥ upload_max_filesize,否则整个 POST 请求(含文件+表单字段)会被截断,报错通常是“413 Request Entity Too Large”或 PHP 返回空 $_FILES
  • max_execution_timemax_input_time:大文件上传耗时长,超时会导致中断,建议设为 300 或更高(单位秒)
  • 若用 ini_set() 在脚本里动态设置,仅对当前请求生效,且不适用于已启动的上传(PHP 启动时就读取 ini 值),所以必须改 php.ini.htaccess(Apache)/ php_admin_value(Nginx + php-fpm)

Nginx 下上传限制的绕不过去的两处配置

Nginx 默认限制客户端请求体大小为 1MB,即使 PHP 全放开,也会在 Nginx 层直接返回 413 Request Entity Too Large

  • 必须在 serverlocation 块中显式设置 client_max_body_size,例如:
    client_max_body_size 50M;
  • 该值要 ≥ PHP 的 post_max_size,否则 Nginx 拦截后根本不会把请求发给 PHP
  • 改完需重载 Nginx:sudo nginx -s reload,不是 restart

Apache 用户注意 .htaccess 的权限与写法

如果不能改主配置,可用 .htaccess 覆盖部分 PHP 设置,但有前提:

  • Apache 必须启用 AllowOverride All 或至少包含 OptionsFileInfo
  • 写法是:
    php_value upload_max_filesize 50M
    php_value post_max_size 52M
    php_value max_execution_time 300
  • 注意:php_value 不支持在 CGI/FastCGI 模式下使用(常见于共享主机),此时会 500 错误;必须确认 PHP 运行模式(用 php_sapi_name() 查)

真正卡住上传的往往不是 PHP 本身,而是 Nginx/Apache 的请求体拦截、反向代理超时(如 Cloudflare 默认 100MB 但有 100 秒超时)、甚至浏览器自身对长连接的处理。调大参数后务必验证整条链路——从浏览器选择文件、到 Nginx 接收、PHP 解析、再到你代码里的 $_FILES 是否完整,缺一不可。

本文转载于:互联网 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注