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"];
我正在尝试创建临时目录,但出现以下错误
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"];