PHP не выдает исключение из-за неправильного размера файла - PullRequest
0 голосов
/ 16 февраля 2011

У меня есть простая форма с вводом файла загрузки.Это код, который обрабатывает эту форму:

$error = false;

if(isset($_POST["name"], $_POST["desc"], $_POST["aname"], $_FILES["skin"])) {
    try {
        // Validate the form
        if(strlen($_POST["name"]) < 3 || strlen($_POST["name"]) > 24)
            throw new Exception("Skin name needs to be between 3 and 24 characters.");
        if(strlen($_POST["desc"]) < 3 || strlen($_POST["desc"]) > 32)
            throw new Exception("Skin description must be between 3 and 32 characters.");
        if(strlen($_POST["aname"]) < 2 || strlen($_POST["aname"]) > 16)
            throw new Exception("Authors name must be between 2 and 16 characters.");

        // Validate the file upload
        if($_FILES["skin"]["error"] !== UPLOAD_ERR_OK)
            throw new Exception("There was a problem uploading the file. Try again later.");
        if($_FILES["skin"]["size"] > 204800)
            throw new Exception("File size must be 200KB or less.");

    } catch (Exception $e) {
        $error = $e->getMessage();
    }
}

А потом в моем коде у меня есть это:

if($error) {
    echo "<p class=\"error\">Error: <i>$error</i></p>";
}

, который отображает ошибку над формой, если было сгенерировано исключениеранее в коде.Все отлично работает, кроме этого раздела:

if($_FILES["skin"]["size"] > 204800)
    throw new Exception("File size must be 200KB or less.");

Я пытаюсь определить, превышает ли размер загружаемого файла более 200 КБ.Если это так, я хочу бросить исключение.Но если я отправлю файл размером 20 МБ через форму загрузки, он его вообще не уловит и не выдаст исключение.

Может кто-нибудь догадаться, почему?Я уже пробовал несколько разных комбинаций, но по какой-то причине он просто не распознает его размером более 200 КБ.

Любая помощь приветствуется, спасибо.

РЕДАКТИРОВАТЬ: Неважно, язабыл изменить настройку php.ini по умолчанию, ограничивающую размеры загрузки POST.Для тех, кто когда-либо сталкивался с этой проблемой, зайдите в файл php.ini и измените эту опцию: post_max_size = 8M на то, что соответствует вашим потребностям.

1 Ответ

3 голосов
/ 16 февраля 2011

Кажется, вы получаете пустые $ _FILES.Это может произойти, если размер опубликованного файла превышает post_max_size в php.ini.

...