Existe-t-il une possibilité d'obtenir le nom de fichier à partir du descripteur de fichier? Ou comment puis-je supprimer un fichier n'ayant qu'une poignée?
Il y a stream_get_meta_data . Cela fonctionne pour un flux que vous obtenez à partir de tmpfile (). Si vous l'appelez sur un pointeur de fichier normal, il se peut que vous n'obteniez que le nom de base.
$meta_data = stream_get_meta_data($stream_or_file_pointer);
$filename = $meta_data["uri"];
echo $filename;
Exemple pour tmpfile ():
"/private/var/folders/v3/n54x13jx5v7610fw9dm0wcxm0000gn/T/phpCJvevP"
Exemple pour fopen ("somefile", "r"):
"test"
Nyes. Afaik il n'y a pas de fonction dans PHP pour cela directement. Mais sous Linux, vous pouvez faire
$fp = fopen('somefile', 'r');
$stat = fstat($fp);
$inode = $stat['ino'];
system("find -inum $inode", $result);
echo $result;
Ceci n'est pas testé, il pourrait donc avoir besoin d'être modifié.
[~ # ~] modifier [~ # ~] Apparemment, il y a est a solution plus simple .
Pour ce faire, vous devrez créer un wrapper qui stocke le nom du fichier. Un descripteur de fichier n'a pas de contexte du nom de fichier à partir duquel il a été créé.