mkdir 在创建目录时发出错误警告

mkdir giving false warning when creating a directory

我正在尝试创建临时目录,但出现以下错误

Warning: mkdir(): File exists

然而,当我检查目录时,实际上 exist.A $tmp 的典型值是 /tmp/testKanfEt

$tmp = tempnam(sys_get_temp_dir() , 'test');
echo  $tmp;
mkdir($tmp);

我在这里错过了什么?

函数tempnam()在给定路径中创建文件returns如果创建成功则为完整路径.您正在尝试创建一个与文件.

具有相同路径的目录

但在这种情况下,我认为 tempnam() 被错误地使用了。 当试图在 o.s 之外的任何其他目录中创建 tmp 文件时,应该使用它。 tmp 文件夹。

为什么?因为在 tmp 目录中创建文件,所以你不应该关心文件名,因为一旦 lock 已在文件上释放(fclose() 或脚本执行结束)你不能保证文件仍然存在。


相反,使用 tmpfile() 作为 returns 文件句柄直接在 tmp 目录中创建文件。

如果您确实需要文件名,您仍然可以使用 tempnam() 或从句柄中检索它,如下所示:

echo stream_get_meta_data(($fh=tempfile()))["uri"];