За последние 24 часа нас посетили 17045 программистов и 1652 робота. Сейчас ищут 918 программистов ...

move_uploaded_file

Тема в разделе "PHP для новичков", создана пользователем Dmtq, 29 июл 2014.

  1. Dmtq

    Dmtq Активный пользователь

    С нами с:
    2 мар 2014
    Сообщения:
    28
    Симпатии:
    0
    Здравствуйте. Есть форма
    Код (Text):
    1. <form enctype="multipart/form-data" action="upload.php" method="POST">
    2. <input type="hidden" name="MAX_FILE_SIZE" value="1073741842" />
    3. Файл: <input name="userfile" type="file" />
    4. <input type="submit" value="Send File" />
    5. </form>
    и upload.php
    Код (Text):
    1. <?php
    2. // В PHP 4.1.0 и более ранних версиях следует использовать $HTTP_POST_FILES
    3. // вместо $_FILES.
    4.  
    5. $uploaddir = '/var/www/html/video/';
    6. $uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
    7.  
    8. echo '<pre>';
    9. if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
    10.     echo "Файл загружен.\n";
    11. } else {
    12.     echo "Возможная атака с помощью файловой загрузки!\n";
    13. }
    14.  
    15. echo 'Некоторая отладочная информация:';
    16. print_r($_FILES);
    17.  
    18. print "</pre>";
    19.  
    20. ?>
    Если я пытаюсь передать файл txt, то вижу следующее:
    Код (Text):
    1.  
    2. Файл загружен.
    3. Некоторая отладочная информация:Array
    4. (
    5.     [userfile] => Array
    6.         (
    7.             [name] => nod.txt
    8.             [type] => text/plain
    9.             [tmp_name] => /tmp/phpVR5Y7g
    10.             [error] => 0
    11.             [size] => 26
    12.         )
    13.  
    14. )
    Но если я пытаюсь передать любой другой файл (я конечно не все форматы перепробовал, но многие), то вижу следующее:
    Код (Text):
    1.  
    2. Возможная атака с помощью файловой загрузки!
    3. Некоторая отладочная информация:Array
    4. (
    5.     [userfile] => Array
    6.         (
    7.             [name] => anons.psd
    8.             [type] =>
    9.             [tmp_name] =>
    10.             [error] => 2
    11.             [size] => 0
    12.         )
    13.  
    14. )
    Как передать не txt файл?
    в php.ini - upload_max_filesize = 1000M
    пытаюсь передать webm в 100 мегабайт и вижу
    Код (Text):
    1.  
    2. Возможная атака с помощью файловой загрузки!
    3. Некоторая отладочная информация:Array
    4. (
    5. )
    он даже имя не передал((
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    значит php даже не пытался сформировать значения для такого о*уенного файла.
    кроме upload_max_filesize есть макс. размер посылки post и есть ограничение по выделяемой памяти для процесса. что в твоем случае "бутылочное горлышко" сам выясни.

    Добавлено спустя 41 секунду:
    p.s. ну и сервер надо перезапускать после изменения настроек ))) так, на всякий случай сказал.