PHP大文件上传失败求助:16MB文件报错但php.ini配置已调优
针对你遇到的16MB文件上传触发错误码2(大小超限),但php.ini配置已设为150M的问题,可从以下几个方向排查:
确认生效的php.ini文件
Windows环境下Apache+PHP可能存在多个php.ini副本(比如PHP安装目录、Apache目录下各有一个),修改的文件可能未被加载。执行phpinfo()函数,查看输出中Loaded Configuration File项的路径,确认是否修改了正确的配置文件,同时检查post_max_size和upload_max_filesize的实际生效值是否为150M。修改后需重启Apache和PHP服务。检查Apache的LimitRequestBody配置
Apache自身有请求体大小限制,默认值通常较小(如8MB),会优先于PHP的配置生效。需在Apache的httpd.conf或对应虚拟主机配置文件中添加或修改:LimitRequestBody 157286400数值单位为字节,157286400对应150MB。修改后务必重启Apache服务。
排查表单的MAX_FILE_SIZE隐藏字段
如果前端HTML表单中设置了<input type="hidden" name="MAX_FILE_SIZE" value="xxxx">,若该值小于16MB,会直接触发错误码2。可将此值调整为157286400(150MB),或直接移除该字段(服务器端配置才是最终的大小限制依据)。验证PHP的max_input_time参数
虽然错误码2指向大小超限,但大文件上传时若输入处理超时,也可能引发异常。可在php.ini中调整max_input_time = 600(单位秒),确保有足够时间处理上传请求,修改后重启服务。
内容的提问来源于stack exchange,提问作者Samuel Brown

