Php 如何检测文件上载是否大于允许的最大值

Php 如何检测文件上载是否大于允许的最大值,php,zend-framework,file-upload,Php,Zend Framework,File Upload,我试图找出如何检测文件是否大于php.ini中允许的最大值。当我发布一个大于最大大小的文件时,帖子是空的。我已经尝试过动态设置post max size和upload max size,但没有效果。我在Zend framework中工作,但在application.ini文件中没有看到任何限制文件上载大小的内容 如果我这样做: if ($this->getRequest()->getPost()) { print_r($_FILES); die(); } 当大小小于php.

我试图找出如何检测文件是否大于php.ini中允许的最大值。当我发布一个大于最大大小的文件时,帖子是空的。我已经尝试过动态设置post max size和upload max size,但没有效果。我在Zend framework中工作,但在application.ini文件中没有看到任何限制文件上载大小的内容

如果我这样做:

if ($this->getRequest()->getPost()) {
    print_r($_FILES); die();
}
当大小小于php.ini限制时,脚本将终止。如果文件较大,则post为空,并且不会命中
die()
。我有什么遗漏吗?如果帖子为空,如何检测文件是否大于限制

已解决:

if (array_key_exists('CONTENT_LENGTH', $_SERVER) && !$_FILES && !$_POST) {
    die();
}

PHP文件上传最大大小由PHP.ini中的3个配置值决定,即上传最大文件大小、上传最大文件大小和内存限制。您可以通过此代码段获取上载时允许的最大文件大小:

$max_upload = (int)(ini_get('upload_max_filesize'));
$max_post = (int)(ini_get('post_max_size'));
$memory_limit = (int)(ini_get('memory_limit'));
$upload_mb = min($max_upload, $max_post, $memory_limit);
if(($_FILES["file"]["size"] > $upload_mb)){die();}else{ echo "smaller value"}
使用
ini_集('post_max_size','8M')
将最大post大小设置为8 MB

使用
ini_集('upload_max_filesize','8M')
将文件的单个大小设置为8兆字节-如果上载多个文件,您仍然可以发布超过8MB的文件,这是可取的

如果文件“太大”,您仍然会在
$\u FILES
中获得发布的文件,但如果您查找它,将出现错误代码,临时文件将不在那里

$\u文件[“文件”][“错误”]
可以具有以下值之一:

通常,您会编写一些
开关案例
语句来处理错误代码。

  • 如果超过
    upload\u max\u filesize
    error
    键包含1()

  • 如果超过
    post\u max\u大小
    ,则
    $\u post
    $\u文件
    均为空


除此之外,请确保在开发时能够看到所有错误消息。

您不需要设置
内存限制,这毫无意义。只有当您要将文件完全读入内存时,您才可以限制
upload\u max\u filesize