是否有可能从文件句柄获得文件名? 或者如何删除只有句柄的文件?
为此,您需要创建一个存储文件名的包装器。文件句柄没有创建它所依据的文件名的上下文。
不,Afaik 在 PHP 中没有直接的函数,但是在 Linux 上,你可以这样做
$fp = fopen('somefile', 'r'); $stat = fstat($fp); $inode = $stat['ino']; system("find -inum $inode", $result); echo $result;
这是未经测试,所以它可能需要调整。
显然,有 是 a 更简单的解决办法。
有 Stream _ get _ meta _ data。它适用于从 Tmpfile ()获得的流。如果你在一个普通的文件指针上调用它,那么你可能只能得到基名。
$meta_data = stream_get_meta_data($stream_or_file_pointer); $filename = $meta_data["uri"]; echo $filename;
例如 tmpfile () :
"/private/var/folders/v3/n54x13jx5v7610fw9dm0wcxm0000gn/T/phpCJvevP"
Fopen (“ somfile”,“ r”)的示例:
"test"
使用临时文件的干净方法:
<? $tmp=array_search('uri', @array_flip(stream_get_meta_data($GLOBALS[mt_rand()]=tmpfile()))); file_put_contents($tmp, 'hello'); echo file_get_contents($tmp); ?>
不需要关闭 tmp 文件,它将在 php 结束时被删除。