应修改php.ini中upload_max_filesize和post_max_size值并重启服务,或在Apache下用.htaccess覆盖,运行时ini_set仅部分环境有效,最后需通过phpinfo验证生效情况。

如果您在使用PHP应用程序上传文件时遇到“文件过大”错误,可能是由于phpinfo中显示的upload_max_filesize值过小。以下是修改该限制的具体方法:
一、修改php.ini配置文件
upload_max_filesize是PHP核心配置项,直接在php.ini中调整可永久生效。需同时确保post_max_size不小于该值,否则上传仍会失败。
1、找到当前PHP使用的php.ini文件路径,可通过phpinfo()页面中的“Loaded Configuration File”行确认。
2、用文本编辑器打开该php.ini文件。
立即学习“PHP免费学习笔记(深入)”;
3、搜索upload_max_filesize,将其值修改为所需大小,例如:upload_max_filesize = 64M。
4、在同一文件中查找post_max_size,确保其值大于或等于upload_max_filesize,例如:post_max_size = 64M。
5、保存文件并重启Web服务器(如Apache执行sudo systemctl restart apache2,Nginx搭配PHP-FPM则需重启php-fpm服务)。
二、通过.htaccess文件临时覆盖(仅限Apache模块模式)
若无法修改php.ini(如共享主机环境),且服务器启用AllowOverride指令,可使用.htaccess在目录级覆盖配置。
1、进入网站根目录或目标上传目录。
2、创建或编辑.htaccess文件。
3、添加以下两行内容:php_value upload_max_filesize 64M。
4、添加:php_value post_max_size 64M。
5、保存文件,无需重启服务,但需确保Apache已加载mod_php且AllowOverride未被设为None。
三、运行时动态设置(适用于部分CGI/FastCGI环境受限场景)
在PHP脚本中使用ini_set()可尝试修改,但upload_max_filesize属于PHP_INI_SYSTEM指令,大多数生产环境(尤其是FastCGI或FPM)下该方式无效,仅在某些模块化Apache环境中可能生效。
1、在上传处理脚本开头插入代码:ini_set('upload_max_filesize', '64M');。
2、同步设置:ini_set('post_max_size', '64M');。
3、注意:此操作不会改变phpinfo()输出值,仅影响当前请求上下文,且实际上传仍受php.ini硬性限制约束。
四、检查并验证修改结果
配置更改后必须验证是否真正生效,因多层配置(主ini、额外ini、.htaccess、用户ini)可能存在覆盖冲突。
1、新建一个PHP文件(如check_upload.php),内容为:。
2、通过浏览器访问该文件。
3、在页面中搜索upload_max_filesize和post_max_size,确认其值已更新为设定数值,并注意“Local Value”与“Master Value”是否一致。
4、若两者不一致,说明存在更高优先级配置覆盖了当前设置,需回溯对应配置源。











