这是根据竞争条件移动上传文件的安全方法吗?
do {
$file = $path . "/" . uniqid() . '.' . $ext;
$fh = @fopen($file, 'x');
} while( ! $fh);
move_uploaded_file($src, $file);
UPD除了学习解决问题的其他方法外,我想知道这段代码是否受制于竞争条件。AFAIU、带有“x”模式的 fopen 和 move_uploaded_file 是原子的,因此不可能发生冲突。
最重要的是,关于“uniqid 就足够了”,几个 人在对 tempnam 的评论中表示有必要将 fopen 与 'x' 模式一起使用以避免竞争条件。他们是否过于偏执?我认为,如果它不会使代码变得非常复杂,那么拥有更安全的解决方案会更好。