Как увеличить максимальный размер загружаемого файла (PHP)?

Я запускаю сервер XAMPP на своем компьютере. Максимальный размер файла, который я загрузил, составляет 24,3 КБ. Мой сервер не может загрузить файл размером 78 КБ. Я знаю, потому что получаю пустой $_FILES['file']['tmp_name'] и ошибку при попытке переместить файл.

Я зашел в php.ini и изменил две переменные: upload_max_filesize = 2M и post_max_size = 8M, обе на более 100, хотя должно было работать на 2 мегабайтах и ​​8 мегабайтах. До сих пор нет успеха.

Я немного новичок в php, но я включил все журналы и попытался проверить журналы ошибок, но единственным, имеющим соответствующую информацию, был журнал ошибок php, и единственная ошибка, которую я вижу, это «неопределенный индекс в пути к файлу/tp/myfile. php в строке 13'. Любые другие журналы ошибок, которые я должен проверить?

Перерыл кучу форумов и тем, так и не нашел, почему у меня не работает.

[EDIT] У меня правильный тип шифрования. (В конце концов, я ДЕЙСТВИТЕЛЬНО получил одно изображение для загрузки). enctype="multipart/form-data

[EDIT2] Мой php-скрипт: если вам любопытно, это упражнение в «Head First php mysql»

<?php
if(isset($_POST['submit'])){
    $first_name = $_POST['first_name'];
    $last_name = $_POST['last_name'];
    $score = $_POST['score'];
    $screenshot = $_FILES['screenshot']['name'];
    $target_directory = "images/$screenshot";
    $tmp_directory = $_FILES['screenshot']['tmp_name'];

    echo "echoing" . $tmp_directory;

    move_uploaded_file($tmp_directory, $target_directory) or die("Failed to move");

$db = "guitarwars";
$table = "highscoretable";

$dbc = mysqli_connect(privateinfor) or die("Failed to connect to server");
mysqli_select_db($dbc, $db) or die("Failed to select database");

$query = "INSERT INTO $table VALUES(0, NOW(), '$first_name', '$last_name', '$score', '$screenshot')";

//mysqli_query($dbc, $query) or die("Failed to query database");

}else{

?>

<html>
    <head>
        <style type="text/css">
            .container {
                width: 100%;
            }
            .container label{
            }
        </style>

    </head>
    <body>
    <h1>Guitar Wars - Add Your High Score</h1>
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
        <div class="container">
        <input type="hidden" name="MAX_FILE_SIZE" value="32768" enctype="multipart/form-data"/>
        <label for="first_name">First Name:</label> 
        <input type="text" size="32" maxlength="32" value="<?php echo $first_name; ?>" placeholder="First Name" id="first_name" name="first_name"/>
        <label for="last_name">Last Name:</label> 
        <input type="text" size="32" maxlength="32" value="<?php echo $last_name; ?>" placeholder="Last Name" id="last_name" name="last_name"/></br>
        <label for="score">Score:</label> 
        <input type="text" size="11" maxlength="11" placeholder="Enter score" value="<?php echo $score; ?>" id="score" name="score"/></br>
        <label for="screenshot">Screenshot:</label> 
        <input type="file" id="screenshot" name="screenshot"/></br>
        <input type="submit" name="submit" value="submit" />
        </div>
    </form>
    </body>
</html>
<?php
    }
?>

person user2316667    schedule 09.06.2013    source источник


Ответы (1)


Вам также необходимо изменить memory_limit

memory_limit = value
upload_max_filesize = value
post_max_size = value
person pvnarula    schedule 09.06.2013
comment
memory_limit = 128M. Я почти уверен, что буква «М» означает мегабайты. - person user2316667; 09.06.2013
comment
пожалуйста, проверьте phpinfo() и посмотрите, обновляются ли они. И еще, вы перезапустили свой сервер? - person pvnarula; 09.06.2013
comment
Я не перезапускал свой сервер. Но я только что перезапустил свой сервер без везения. Значения, отображаемые в phpinfo(): post_max_size=100M, upload_max_filesize = 100M. memory_limit = 128M. - person user2316667; 09.06.2013
comment
Это все еще не позволяет вам загрузить? Вы получаете ошибку тайм-аута или нет? - person pvnarula; 09.06.2013
comment
Да, я вставил свой php-код выше. Я получаю «echoingFailed To Move». Это означает, что временный каталог не отображается, и я получаю сообщение die(). Но для моего крошечного файла размером 27 КБ я получаю каталог tmp. например. эхо C/директория. Я не знаю, что такое ошибка тайм-аута, но надеюсь, что это ответило на ваш вопрос. функция die() выполняется (если это тайм-аут). - person user2316667; 09.06.2013
comment
Не могли бы вы также print_r($_FILES); и вставьте сюда результат - person pvnarula; 09.06.2013
comment
Массив ( [скриншот] => Массив ( [имя] => 489125.jpg [тип] => [tmp_name] => [ошибка] => 2 [размер] => 0 ) ) echoingFailed to move. Если это актуально (я только что проверил), я пытался использовать файл только со строчными буквами, но безрезультатно. - person user2316667; 09.06.2013
comment
Загруженный файл превышает директиву MAX_FILE_SIZE, указанную в HTML-форме. Удалите: - ‹тип ввода=скрытое имя=MAX_FILE_SIZE значение=32768 enctype=multipart/form-data/› - person pvnarula; 09.06.2013
comment
@user2316667 user2316667 Надеюсь, это ответ на ваш вопрос. Пожалуйста, отметьте вопрос как выполненный. - person pvnarula; 09.06.2013
comment
Ах! Я просто повторил эту строчку из своей книги. Один вопрос, прежде чем вы пойдете для моего собственного понимания, если вы будете так любезны. КАК этот ввод ограничивает размер файла? Я вообще нигде не упоминал об этом и думал, что скрытые типы ввода предназначены исключительно для возврата данных для удобства сервера (например, идентификационный номер для ввода/изменения данных) (и спасибо!) - person user2316667; 09.06.2013
comment
Когда вы отправляете данные обратно на сервер, он кодирует данные формы, а php-сервер декодирует их. Таким образом, есть директивы формы php, которые контролируют обработку данных. Вы также можете изменить имя MAX_FILE_SIZE на свое усмотрение в php.ini. - person pvnarula; 09.06.2013
comment
Нет ссылки на MAX_FILE_SIZE в php.ini? Но вы говорите, что есть предопределенная функция, которая ищет MAX_FILE_SIZE, и эта функция перезаписывает максимальные размеры, установленные в ini? Я был бы признателен, если бы вы в последнюю очередь сказали мне, где я могу изменить имя данных формы «MAX_FILE_SIZE». Итак, скажем, мой сервер вместо этого ищет почтовые данные «MAX_SIZE» для ограничения. Как я уже сказал, я не смог найти ссылку на MAX_FILE_SIZE. Внутренняя работа мне очень интересна. Я так ценю это! - person user2316667; 09.06.2013
comment
Извините, я неправильно написал, что вы также можете изменить имя MAX_FILE_SIZE на свой выбор в php.in. Я имел в виду, что вы можете изменить настройки размера загрузки в php.ini. Директива формы HTML заключается в том, что вы можете управлять ею из поля HTML, а не изменять в php.ini. Но в целях безопасности просто проигнорируйте его и измените через php.ini. - person pvnarula; 09.06.2013
comment
Также многие серверы не разрешают использовать эти директивы, поэтому не полагайтесь на них. - person pvnarula; 09.06.2013