是否有必要手动检查php.ini的文件大小?

时间:2015-01-01 22:37:40

标签: php apache file-upload upload

因此,当用PHP上传文件时,我目前正在针对php.ini文件检查上传大小错误:

switch ($_FILES['file']['error']) {
    case UPLOAD_ERR_OK:
        break;
    case UPLOAD_ERR_NO_FILE:
        throw new RuntimeException('No file sent.');
    case UPLOAD_ERR_INI_SIZE:
    case UPLOAD_ERR_FORM_SIZE:
        throw new RuntimeException('Exceeded filesize limit.');
    default:
        throw new RuntimeException('Unknown errors.');
}

然后手动检查:

$max_size = "10490000";
if ($_FILES['file']['size'] > $max_size) {
    throw new RuntimeException('Exceeded filesize limit.');
}

第二步是否必要?或者只是检查错误就足够了。

或者,如果有必要,我可以安全地做第二次检查:

$max_size = (int)(ini_get('upload_max_filesize'));

1 个答案:

答案 0 :(得分:1)

(1)第二步没有必要,但您必须将UPLOAD_ERR_INI_SIZE案件与UPLOAD_ERR_FORM_SIZE案件分开,因为它们具有不同的含义,如手册所述 http://php.net/manual/en/features.file-upload.errors.php

(2)php.ini文件中的条目upload_max_filesize的值是用这种表示法写的:
XY :其中 X 是一个整数, Y 是单位, Y 可以是G(千兆字节),M(兆字节)......等,阅读手册以获得更多说明 http://php.net/manual/en/faq.using.php#faq.using.shorthandbytes,因此使用(int)(ini_get('upload_max_filesize'));始终不安全,需要额外处理