如何确定php中的最大文件上载限制

如何确定php中的最大文件上载限制,php,Php,如何使用php脚本确定php设置允许的文件上载大小?用于获取当前配置值: ini_get('upload_max_filesize') 上载受三个选项限制:上载最大文件大小、发布最大文件大小和内存限制。你的上传只有在没有超过其中一个的情况下才能完成 ini_get()函数为您提供了限制的简要说明,应该首先进行转换。谢谢 function return_bytes($val) { $val = trim($val); $last = strtolower($val[strlen(

如何使用php脚本确定php设置允许的文件上载大小?

用于获取当前配置值:

ini_get('upload_max_filesize')

上载受三个选项限制:上载最大文件大小发布最大文件大小内存限制。你的上传只有在没有超过其中一个的情况下才能完成

ini_get()函数为您提供了限制的简要说明,应该首先进行转换。谢谢

function return_bytes($val) {
    $val = trim($val);
    $last = strtolower($val[strlen($val)-1]);
    switch($last) 
    {
        case 'g':
        $val *= 1024;
        case 'm':
        $val *= 1024;
        case 'k':
        $val *= 1024;
    }
    return $val;
}

function max_file_upload_in_bytes() {
    //select maximum upload size
    $max_upload = return_bytes(ini_get('upload_max_filesize'));
    //select post limit
    $max_post = return_bytes(ini_get('post_max_size'));
    //select memory limit
    $memory_limit = return_bytes(ini_get('memory_limit'));
    // return the smallest of them, this defines the real limit
    return min($max_upload, $max_post, $memory_limit);
}

来源:

您也可以在运行时使用.htaccess文件更改该大小,而无需更改php.ini文件

php_value upload_max_filesize 1224M
php_value post_max_size 1224M
php_value max_execution_time 3000
php_value max_input_time 3000
复制代码并放入文件,然后将该文件与索引文件一起存储,然后运行项目,您还可以上载1GB文件


有关详细信息,请使用ini_set()设置最大文件上载大小

或 使用.htaccess文件

php_value upload_max_filesize 
php_value post_max_size 

这里有一个函数,实现了AoEmaster的原始思想。 函数返回整数(字节数)

结果可能是:


允许的最大上载大小:500 MB

应该注意,这不包括ini文件中的速记符号,因此如果您有“64M”的限制,它将被解析为64。最好在比较之前将所有文件转换为字节。我同意布雷迪的观点,我现在看到的大多数ini文件都使用速记符号。看到这个转换使答案符合需要。另一个可能限制文件上传的因素是运行时。检查max_execution_time和max_input_time。除了一段代码之外,多做一点解释会更有用。对不起,我是法国人,我不能用好的英语解释。我只是想帮助和分享我的解决方案。缺少$memory_限制了合作伙伴对switch的随意使用。几乎可以验证注释的使用,以防下一个程序员看不到它。其中一些设置可以在.php脚本中使用ini_集进行更改,而有些则不能。有关完整列表,请参阅。例如,post_max_size说:“PHP中的PHP_INI_PERDIR PHP_INI_系统
php_value upload_max_filesize 
php_value post_max_size 
function return_bytes($val) 
{
    $val = trim($val);
    $last = strtolower($val[strlen($val)-1]);

    switch($last) 
    {
        case 'g':
        $val *= 1024;
        case 'm':
        $val *= 1024;
        case 'k':
        $val *= 1024;
    }

    return $val;
}

function get_upload_max_filesize()
{
    $max_upload = return_bytes(ini_get('upload_max_filesize'));
    $max_post = return_bytes(ini_get('post_max_size'));
    return min($max_upload, $max_post, $memory_limit);
}
function _GetMaxAllowedUploadSize(){
    $Sizes = array();
    $Sizes[] = ini_get('upload_max_filesize');
    $Sizes[] = ini_get('post_max_size');
    $Sizes[] = ini_get('memory_limit');
    for($x=0;$x<count($Sizes);$x++){
        $Last = strtolower($Sizes[$x][strlen($Sizes[$x])-1]);
        if($Last == 'k'){
            $Sizes[$x] *= 1024;
        } elseif($Last == 'm'){
            $Sizes[$x] *= 1024;
            $Sizes[$x] *= 1024;
        } elseif($Last == 'g'){
            $Sizes[$x] *= 1024;
            $Sizes[$x] *= 1024;
            $Sizes[$x] *= 1024;
        } elseif($Last == 't'){
            $Sizes[$x] *= 1024;
            $Sizes[$x] *= 1024;
            $Sizes[$x] *= 1024;
            $Sizes[$x] *= 1024;
        }
    }
    return min($Sizes);
}
function _Byte2Size($bytes,$RoundLength=1) {
    $kb = 1024;         // Kilobyte
    $mb = 1024 * $kb;   // Megabyte
    $gb = 1024 * $mb;   // Gigabyte
    $tb = 1024 * $gb;   // Terabyte

    if($bytes < $kb) {
        if(!$bytes){
            $bytes = '0';
        }
        return (($bytes + 1)-1).' B';
    } else if($bytes < $mb) {
        return round($bytes/$kb,$RoundLength).' KB';
    } else if($bytes < $gb) {
        return round($bytes/$mb,$RoundLength).' MB';
    } else if($bytes < $tb) {
        return round($bytes/$gb,$RoundLength).' GB';
    } else {
        return round($bytes/$tb,$RoundLength).' TB';
    }
}
echo 'Max allowed upload size: '._Byte2Size(_GetMaxAllowedUploadSize());