web-dev-qa-db-fra.com

Obtention du nom de fichier (ou suppression du fichier) à l'aide du descripteur de fichier

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?

64
ts.

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"
126
lion.vollnhals

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 .

8
Gordon

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éé.

3
Greg