Я не могу заставить работать функцию rename () в PHP (или любую другую функцию модификации файла) - PullRequest
0 голосов
/ 14 марта 2020

Спасибо за ваше время.

Итак, у меня есть веб-сервер стека LAMP, и я хочу изменить путь к загруженному файлу.

Например, пользователь загружает изображение через интерфейс, код PHP читает его, переименовывает файл в хешированную строку, чтобы файлы не перекрывались и не имели одинаковых имен в каталоге загрузки изображений, и указывал столбец изображения в строке пользователя на новый путь в таблице SQL.

Итак, у меня все работает, кроме переименования файла.

Имя файла успешно передано (т.е. ball.png)

    $fileName = basename($_FILES["file"]["name"]); //This works, and let's pretend that it is "ball.png" in this example.

    $baseDir = "uploads/profiles"; //This code works as it should.
    $targetPath = $baseDir.$fileName; //This code works as it should.

    $newFileName = $randomString.$fileExtension;
    //The random string variable is generated in a previous function, and it works. Let's pretend that it is "e7635hasf1 in this example."
    //The file extension variable is generated in a previous function, and it works. Let's pretend that it is ".png" in this example.

    rename($targetPath, $newFileName);
    //This is the code that does not work. I've tried changing permissions, doing it in the same directory to simplify things, but can't get rename() to work at all.

    updateTables();
    //This code works as it should. The SQL picture column for the row of the user that uploaded the picture now reads "uploads/profiles/e7635f1.png"

Я использую PHP 7, если это поможет. Этот код работает нормально, если я ничего не переименовываю (например, если я выполняю функцию updateTables () и передаю «uploads / profile / ball.png», а не «uploads / profile / e7653hasf1.png»). По сути, это указывает на то, что проблема в функции rename (), так что это указатель c, который не работает.

Еще раз спасибо за ваше время. Если у вас есть вопросы, пожалуйста, дайте мне знать.

1 Ответ

0 голосов
/ 14 марта 2020
$targetPath = $baseDir.'/'.$fileName;

$newFileName = $baseDir.'/'.$randomString.$fileExtension;
...