从文件获取内容时发出警告,如果使用 "move_uploaded_file()" 和 "file_get_contents()"

Warning while getting content from file, if used "move_uploaded_file()" and "file_get_contents()"

当我按以下顺序使用函数时,我在 PHP 中收到有关停止脚本的警告:

move_uploaded_file() used first

然后包括下一个函数:

file_get_contents() used second

我收到警告消息:

file_get_contents(D:\Programs\WAMP\WAMP_Server\tmp\phpD8E2.tmp): failed to open stream: No such file or directory

但是,如果我反转这些函数:file_get_contents() first 然后使用 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()[=36 之后出现错误=] func,但是在反转之后它可以正常工作吗?如何在不逆转的情况下修复它?

这是因为 move_uploaded_file ( string $filename , string $destination ) 嗯...将 $filename 移动到新的 $destination。所以在原路径下已经不可用了

鉴于你的第一个例子,你应该这样做:

$uploadedFile = file_get_contents($target_dir_file);