PHP警告:POST内容 – n字节的长度超过第0行中未知的3145728字节的限制
发布时间:2020-05-26 01:46:26 所属栏目:PHP 来源:互联网
导读:我非常惊讶地发现我的错误日志中的上述错误,因为我以为我已经完成了必要的工作来捕获我的 PHP脚本中的错误: if ($_FILES[image][error] == 0){ // go ahead to process the image file}else{ // determine the error switch($_FILES[image][error])
|
我非常惊讶地发现我的错误日志中的上述错误,因为我以为我已经完成了必要的工作来捕获我的 PHP脚本中的错误: if ($_FILES['image']['error'] == 0)
{
// go ahead to process the image file
}
else
{
// determine the error
switch($_FILES['image']['error'])
{
case "1":
$msg = "Uploaded file exceeds the upload_max_filesize directive in php.ini.";
break;
....
}
}
在我的PHP.ini脚本中,相关设置为: memory_limit = 128M post_max_size = 3M upload_max_filesize = 500K 我明白,3M相当于3145728字节,这是触发错误的.如果文件大小超过500k但小于3M,则PHP脚本将能够正常运行,根据情况1在$msg中发出错误消息. 如果邮件大小超过post_max_size但仍然在内存限制内,我如何捕获此错误,而不是让脚本突然终止使用PHP警告?我已经看过类似的问题here,here和here,但找不到答案. 找到一个不直接处理错误的替代解决方案.以下代码由软件工程师Andrew Curioso在其 blog中编写:if($_SERVER['REQUEST_METHOD'] == 'POST' && empty($_POST) &&
empty($_FILES) && $_SERVER['CONTENT_LENGTH'] > 0)
{
$displayMaxSize = ini_get('post_max_size');
switch(substr($displayMaxSize,-1))
{
case 'G':
$displayMaxSize = $displayMaxSize * 1024;
case 'M':
$displayMaxSize = $displayMaxSize * 1024;
case 'K':
$displayMaxSize = $displayMaxSize * 1024;
}
$error = 'Posted data is too large. '.
$_SERVER[CONTENT_LENGTH].
' bytes exceeds the maximum size of '.
$displayMaxSize.' bytes.';
}
如他的文章中所解释的,当post的大小超过post_max_size时,$_POST和$_FILES的超级全局数组将变为空.因此,通过测试这些并通过确认使用POST方法发送一些内容,可以推断出发生了这样的错误. 实际上有一个类似的问题here,我以前没有找到. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
