使用文件句柄获取文件名(或删除文件)

ts.*_*ts. 65 php file

是否有可能从文件句柄获取文件名?或者我如何删除只有句柄的文件?

lio*_*als 127

stream_get_meta_data.它适用于从tmpfile()获得的流.如果您在常规文件指针上调用它,那么您可能只获得基本名称.

$meta_data = stream_get_meta_data($stream_or_file_pointer);
$filename = $meta_data["uri"];
echo $filename;
Run Code Online (Sandbox Code Playgroud)

tmpfile()的示例:

"/private/var/folders/v3/n54x13jx5v7610fw9dm0wcxm0000gn/T/phpCJvevP"
Run Code Online (Sandbox Code Playgroud)

fopen的示例("somefile","r"):

"test"
Run Code Online (Sandbox Code Playgroud)

  • 这有效!我不知道这怎么没有成为公认的答案,这里的每个人都说这是不可能的.也适用于Windows. (4认同)
  • 谢谢你,看起来是这么简单的事情,但结果是这么头疼......你可以/应该也使用`realpath`来获取完整的文件路径。 (2认同)

Gor*_*don 8

Nyes.Afaik在PHP中没有直接的功能.但是在Linux上,你可以做到

$fp = fopen('somefile', 'r');
$stat = fstat($fp);
$inode = $stat['ino'];
system("find -inum $inode", $result);
echo $result;
Run Code Online (Sandbox Code Playgroud)

这是未经测试的,因此可能需要调整.

编辑显然,有一个简单的解决方案.