如何在PHP中将文件内容复制到临时文件中?

如何在PHP中将文件内容复制到临时文件中?,php,temporary-files,Php,Temporary Files,我试过这个: $temp = tmpfile(); file_put_contents($temp,file_get_contents("$path/$filename")); 但是我得到了这个错误:“警告:file\u put\u contents()期望参数1是字符串,” 如果我尝试: echo file_get_contents("$path/$filename"); 它将返回以长字符串形式显示文件内容。 我错在哪里?tmpfile()在读写(w+)模式下创建一个具有唯一名称的临时文件

我试过这个:

$temp = tmpfile();
file_put_contents($temp,file_get_contents("$path/$filename"));
但是我得到了这个错误:“警告:file\u put\u contents()期望参数1是字符串,”

如果我尝试:

echo file_get_contents("$path/$filename");
它将返回以长字符串形式显示文件内容。 我错在哪里?

tmpfile()
在读写(w+)模式下创建一个具有唯一名称的临时文件,并返回一个文件句柄,例如与fwrite一起使用

$temp = tmpfile();
fwrite($temp, file_get_contents("$path/$filename"));

文件在关闭时(例如,通过调用fclose(),或当tmpfile()返回的文件句柄没有剩余引用时)或脚本结束时自动删除。请看。

在您给出的示例中,您想要而不是想要

  • 创建临时文件并将其路径作为字符串返回。然后可以将该字符串传递到文件内容中。完成临时文件后,必须记住手动删除它

  • 创建一个临时文件并返回一个文件资源/指针,用于
    fwrite()
    和其他文件操作函数。此外,一旦脚本执行结束,由
    tmpfile()
    创建的临时文件将自动删除


以下是您的示例脚本,使用而不是:


tmpfile-创建一个临时文件
并返回一个文件指针而不是stringuse
tempnam
它返回的是字符串文件名而不是资源。我认为参数列表是零基的注意!在这种情况下,您需要自己删除该文件,以防不再需要它,因为它不是自动完成的。@alkaponey确切地说,只需一个简单的
取消链接($temp)
您可以删除临时文件。
复制($path/$filename,$temp)
将使用更少的cpu和内存资源。
$temp = tempnam(sys_get_temp_dir(), 'TMP_');

file_put_contents($temp, file_get_contents("$path/$filename"));