Mkdir在创建目录时给出错误警告


mkdir giving false warning when creating a directory

我正在尝试创建一个临时目录,但我得到以下错误

Warning: mkdir(): File exists

然而,当我检查时,目录实际上不存在。$tmp的典型值为/tmp/testKanfEt

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

我在这里错过了什么?

函数tempnam() 在给定路径中创建文件,如果创建成功,返回完整路径。您正在尝试创建一个与文件具有相同路径的目录。


但是在这种情况下,我认为tempnam()被错误地使用了。当试图在os .tmp文件夹以外的任何目录中创建tmp文件时,应该使用该命令。

为什么?因为在tmp目录下创建文件,您不应该关心文件名,因为一旦在文件上被释放(例如使用fclose()或脚本执行结束),您不能保证该文件仍然在那里。


相反,使用tmpfile(),因为它返回一个文件句柄,直接在tmp目录中创建文件。

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

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

相关文章: