有人知道一个好的PHP解决方案来删除或更好地从linux系统擦除文件吗?
方案: 文件被加密并保存,当请求下载时,文件被复制到临时文件夹并被解密。这已经有效了。
但是如何在发送给用户后从临时位置删除文件?
在我看来,我有以下选择:
目标:从硬盘中删除文件,无法恢复(擦除/覆盖)
答案 0 :(得分:7)
通过exec / system / passthru
调用“shred”答案 1 :(得分:5)
可以说最好的办法是永远不要将文件保存在解密状态。
相反,使用stream filters即时解密并将其直接发送给最终用户。
<强>更新强>
如果您考虑以下代码,您的选项1实际上并不太糟糕:
$filename = 'path/to/file';
$size = filesize($filename);
$src = fopen('/dev/zero', 'rb');
$dest = fopen('/path/to/file', 'wb');
stream_copy_to_stream($src, $dest, $size);
fclose($src);
fclose($dest);
您也可以选择/dev/urandom
,但这样会很慢。