【发布时间】:2020-12-31 21:59:19
【问题描述】:
我正在开发的一个 PHP 站点有一个表单,允许用户在编辑对象时上传零个或多个文件。作为测试表单的一部分,我尝试上传总请求大小超过post_max_size 的文件。
这会导致在服务器日志中生成以下条目:
PHP Warning: POST Content-Length of 182213631 bytes exceeds the limit of 16777216 bytes in Unknown on line 0
$_POST 数组也是空的。
我可以接受警告,但是空的$_POST 数组会导致问题,因为它通常包含有关请求的一些其他信息,例如正在编辑的对象的 ID。这会阻止网站显示有用的错误消息,包括对象的名称等(例如,“您尝试编辑对象 X,但您上传的文件太大”)。
有没有办法在 PHP 中检测和处理这个特定问题?如果文件太大,表单确实有一些 JavaScript 来显示警告,但这仅在浏览器支持 File API 时才有效(并非全部支持),用户经常忽略警告,一般我尝试复制任何客户端检查服务器,因为绕过客户端检查很简单。
我知道我可以增加 post_max_size 并且知道如何做到这一点,但问题是优雅地处理超过该大小的上传。
PHP 版本:5.6.40(我知道这是不支持的,但升级并不容易或完全在我的控制之下)
【问题讨论】:
标签: php