Предупреждение при получении содержимого из файла, если используются «move_uploaded_file ()» и «file_get_contents ()» - PullRequest
0 голосов
/ 13 октября 2019

Я получаю предупреждение с остановкой скрипта в PHP, когда использую функции в следующем порядке:

move_uploaded_file () сначала используется

и после этого включена следующая функция:

file_get_contents () используется секунда

Iполучаю предупреждение с сообщением:

file_get_contents (D: \ Programs \ WAMP \ WAMP_Server \ tmp \ phpD8E2.tmp): не удалось открыть поток: нет такого файла или каталога

Но, если я переверну эти функции: file_get_contents () сначала , а затем использую move_uploaded_file () - все верно без ошибок, и это работает. Где проблема? Мой код с ошибками ниже:

/* File management variables */
$filename = $_FILES["uploadFile"]["name"];
$uploadedFile = $_FILES['uploadFile']['tmp_name'];
$uploadedFileType = $_FILES['uploadFile']['type'];
$target_dir = '../uploads/';
$target_dir_file = $target_dir . basename($filename);
$textFileType = strtolower(pathinfo($target_dir_file,PATHINFO_EXTENSION));

/* First: used  move_uploaded_file() func */
move_uploaded_file($uploadedFile, $target_dir_file);

/* Second: used  file_get_contents() func */
$dbPath = fopen('../database/database.txt', 'a');
$uploadedFile = file_get_contents($uploadedFile);
fwrite($dbPath, $uploadedFile);
fclose($dbPath);

Если поменять местами эти две функции

/* First: used  file_get_contents() func */
$dbPath = fopen('../database/database.txt', 'a');
$uploadedFile = file_get_contents($uploadedFile);
fwrite($dbPath, $uploadedFile);
fclose($dbPath);

/* Second: used  move_uploaded_file() func */
move_uploaded_file($uploadedFile, $target_dir_file);

все правильно и скрипт работает без ошибок.

Почему я получаюошибка при использовании сначала move_uploaded_file () func и после file_get_contents () func, но после реверса он работает без ошибок? Как я могу это исправить, не поворачивая?

1 Ответ

2 голосов
/ 13 октября 2019

Это потому, что move_uploaded_file ( string $filename , string $destination ) хорошо ... переходит $filename в новое $destination. Поэтому он больше не доступен по исходному пути.

Учитывая ваш первый пример, вы должны сделать:

$uploadedFile = file_get_contents($target_dir_file);
...