Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否需要根据php.ini和手动检查文件大小?_Php_Apache_File Upload_Upload - Fatal编程技术网

是否需要根据php.ini和手动检查文件大小?

是否需要根据php.ini和手动检查文件大小?,php,apache,file-upload,upload,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

因此,在用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) 第二步是不必要的,但您必须将
上传错误信息大小
案例与
上传错误信息大小
案例分开,因为它们的含义与手册中的不同

(2) php.ini文件中的条目
upload\u max\u filesize
的值使用以下符号编写:
XY:其中X是整数,Y是单位,Y可以是G(千兆字节),M(兆字节)…等等,请阅读手册以了解更多说明 ,因此使用
(int)(ini_get('upload_max_filesize')并非总是安全的,需要额外处理