这是一种根据竞争条件移动上传文件的安全方法吗?
do {
$file = $path . "/" . uniqid() . '.' . $ext;
$fh = @fopen($file, 'x');
} while( ! $fh);
move_uploaded_file($src, $file);
UPD 除了学习解决问题的其他方法外,我想知道这段代码是否符合竞争条件。 AFAIU,与'x'模式和move_uploaded_file一起使用是原子的,因此不可能发生冲突。
除此之外,关于“uniqid就足够了”,several people中的comments {{3}}表示必须使用fopen和'x'模式来避免竞争条件。他们过分偏执吗?我认为,如果不使代码变得非常复杂,那么更安全的解决方案会更好。