Как переименовать файл при использовании move_uploaded_file ()?

Проблема: я не могу переименовать файл независимо от того, какой метод я найду на любом сайте. Я всегда получаю эту ошибку

Предупреждение: move_uploaded_file (CUSTOM / TestFile.txt): не удалось открыть поток: нет такого файла или каталога в C: \ XAMPP \ htdocs \ CUSTOM \ upload.php в строке 7

Предупреждение: move_uploaded_file (): невозможно переместить ‘C: \ XAMPP \ tmp \ php7AAB.tmp’ в ‘CUSTOM / TestFile.txt’ в C: \ XAMPP \ htdocs \ CUSTOM \ upload.php в строке 7

Если я не пытаюсь переименовать загруженный файл, загрузка прошла успешно, однако файл переименовывается в имя папки (в данном случае «CUSTOM»)

КОНТЕКСТ:

  • Сервер: Localhost с использованием программного обеспечения XAMPP
  • file_upload = yes на php.ini
  • Разрешения папки = да
  • Папка существует = да
  • Форма Действие = Я
  • Форма Метод = сообщение
  • Форма Enctype = используется

    Пусть навсегда удача будет на том, кто найдет решение.

        <?php
    
    $fname = $_FILES['file']['name'];
    $ftemp = $_FILES['file']['tmp_name'];
    $location = "CUSTOM/";
    
    move_uploaded_file($ftemp, $location.$fname);
    
    ?>
    
    <html>
    <body><form action="upload.php" method="post" enctype="multipart/form-data">
    <input type="file" name="file" ><br/>
    <input type="submit" value="Upload File">
    </form></body>
    </html>
    

    0
  • Решение

    Это не ваша проблема:

    Warning: move_uploaded_file(): Unable to move 'C:\XAMPP\tmp\php7AAB.tmp'

    Но это:

    to 'CUSTOM/TestFile.txt'

    Потому что:

    in C:\XAMPP\htdocs\CUSTOM\upload.php on line 7

    Вы пытаетесь переместить временный файл в CUSTOM/CUSTOM/TestFile.txt. Ваш скрипт загрузки, о котором вы должны были упомянуть, уже находится в CUSTOM, Который, таким образом, является текущим рабочим каталогом. Поэтому пытается записать в файл с другим родственник префикс пути из CUSTOM/ «удвоит» предполагаемое целевое имя каталога.

    Кстати, клиент поставляется name может быть что-нибудь — четное index.php или перезаписать upload.php или, возможно, даже ../../boot.ini, Не просто примите любой пользовательский ввод. По крайней мере применить basename, белый список, когда это возможно, использовать целевую папку, отличную от того, где находятся сценарии, и запрещать выполнение CGI / PHP в соответствии с .htaccess и т.п.

    1

    Другие решения

    Других решений пока нет …

    По вопросам рекламы [email protected]