我正在尝试创建一个临时目录,但我收到了以下错误
Warning: mkdir(): File exists
但是当我检查目录时实际上并不存在。$tmp
的典型值是/tmp/testKanfEt
$tmp = tempnam(sys_get_temp_dir() , 'test');
echo $tmp;
mkdir($tmp);
我在这里缺少什么?
答案 0 :(得分:2)
函数tempnam()
在给定路径中创建文件,如果成功创建,将返回完整路径。您正在尝试使用与文件相同的相同 路径创建目录。
但在这种情况下,我认为tempnam()
被错误地使用了。
当尝试在除o.s.之外的任何其他目录中创建 tmp 文件时,应该使用它。 tmp 文件夹。
为什么呢?因为在 tmp 目录中创建文件,所以不应该关心文件名,因为一旦在文件上发布了 lock (使用fclose()
或脚本结束执行例如)你不能保证文件仍在那里。
而是使用tmpfile(),因为它返回一个文件句柄,直接在 tmp 目录中创建一个文件。
如果您确实需要文件名,您仍然可以使用tempnam()
或从句柄中检索它,如下所示:
echo stream_get_meta_data(($fh=tempfile()))["uri"];