如何处理超过PHP的`post_max_size`的文件?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (263)

我正在编写一个PHP表单,它将一个文件附加到电子邮件中,并处理上传文件太大的情况。

我了解到在php.ini影响文件上载的最大大小:upload_max_filesizepost_max_size...

如果文件的大小超过upload_max-filesize,PHP将文件的大小返回为0。

但如果它超过post_max_size,我的脚本失败,返回空白表单。

有什么办法能捕捉到这个错误吗?

提问于
用户回答回答于

文档

如果发布数据的大小大于post_max_size,则$ _POST和$ _FILES超全局变量是空的。这可以通过各种方式进行跟踪,例如将$ _GET变量传递给处理数据的脚本,即<form action =“edit.php?processed = 1”>,然后检查$ _GET ['processed']是否为组。

所以不幸的是,它看起来不像PHP发送错误。而且由于它发送的是空的$ _POST数组,这就是为什么你的脚本回到空白表单 - 它不认为这是一个POST。

用户回答回答于

有一种方法可以捕获/处理超过最大POST大小的文件,这是我的首选,因为它告诉最终用户发生了什么事情,以及谁出错了;)

    if(empty($_FILES) && empty($_POST) && isset($_SERVER['REQUEST_METHOD']) && strtolower($_SERVER['REQUEST_METHOD']) == 'post'){ //catch file overload error...
        $postMax = ini_get('post_max_size'); //grab the size limits...
        echo "<p style=\"color: #F00;\">\nPlease note files larger than {$postMax} will result in this error!<br>Please be advised this is not a limitation in the CMS, This is a limitation of the hosting server.<br>For various reasons they limit the max size of uploaded files, if you have access to the php ini file you can fix this by changing the post_max_size setting.<br> If you can't then please ask your host to increase the size limits, or use the FTP uploaded form</p>"; // echo out error and solutions...
        addForm(); //bounce back to the just filled out form.
}
elseif(// continue on with processing of the page...

扫码关注云+社区

领取腾讯云代金券