php文件上传大小限制由运行时配置项控制,需修改php.ini中的upload_max_filesize、post_max_size等参数并重启web服务,nginx用户还需同步设置client_max_body_size。

PHP 文件上传大小限制不是在源码中硬编码的,而是由运行时配置项控制的。你无法也不应该去修改 PHP 源代码(如 main/rfc1867.c 或其他 C 文件)来更改上传限制——这既不安全、不可维护,也不符合 PHP 的设计逻辑。所有上传大小限制都通过配置参数动态生效,修改配置才是标准、可靠、可复现的做法。
以下是真正有效且推荐的操作方式:
修改 php.ini 中的关键配置项
这是最常用、最彻底的调整方法,适用于你有服务器管理权限的场景:
-
upload_max_filesize:单个文件最大允许大小 -
post_max_size:整个 POST 请求体上限(必须 ≥upload_max_filesize) -
memory_limit:脚本可用内存(建议设为post_max_size的 1.5–2 倍) -
max_execution_time和max_input_time:防止大文件上传超时(建议 ≥300)
示例设置:
upload_max_filesize = 100M post_max_size = 105M memory_limit = 256M max_execution_time = 300 max_input_time = 300
✅ 修改后必须重启 Web 服务(Apache/Nginx + PHP-FPM)才能生效。
验证你改的是正确的 php.ini
别凭感觉编辑——用以下代码确认实际加载的配置文件路径:
<?php echo ini_get('upload_max_filesize'); ?><?php phpinfo(); ?>
在 phpinfo() 输出中查找 “Loaded Configuration File”,确保你编辑的就是这一份。
其他可行但有限制的替代方式
用 .htaccess(仅 Apache + mod_php)
php_value upload_max_filesize 64M php_value post_max_size 72M
⚠️ 不适用于 PHP-FPM 或多数云主机/共享主机(可能触发 500 错误)。
用 ini_set()(仅当前请求生效,且常被禁用)
ini_set('upload_max_filesize', '64M'); // 实际无效!该指令不能修改 upload_max_filesize 等启动期参数
❌ 注意:upload_max_filesize 和 post_max_size 无法通过 ini_set() 动态修改(PHP 官方明确标注为 PHP_INI_PERDIR / PHP_INI_SYSTEM 类型,仅支持配置文件设置)。试图调用会静默失败。
Nginx 用户必须同步配置
Nginx 自身会拦截超大的请求体,与 PHP 配置无关:
client_max_body_size 100M;
加在 http、server 或 location 块中,然后执行 sudo nginx -s reload。
不复杂但容易忽略。改对配置、选对位置、重启到位,上传限制就生效了。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











