92 votes

PHP : comment obtenir la date de création d'un fichier ?

Je lis un dossier contenant de nombreux fichiers.

Comment puis-je obtenir la date de création d'un fichier. Je ne vois pas de fonction directe pour l'obtenir.

Il y a filemtime y filectime .

Et si le fichier n'a pas été modifié, que se passera-t-il ?

121voto

Alin Purcaru Points 21373

Utilisez filectime . Pour Windows, il renverra l'adresse création et pour Unix, le changement ce qui est le mieux que vous puissiez obtenir car sous Unix il n'y a pas de temps de création (dans la plupart des systèmes de fichiers).

Notez également que dans certains textes Unix, l'option ctime d'un fichier est considéré comme étant l'heure de création du fichier. Ceci est faux. Il n'y a pas d'heure de création de création pour les fichiers Unix dans la plupart systèmes de fichiers.

0 votes

Renvoie l'heure de la dernière modification du fichier, ou FALSE en cas d'échec. L'heure est renvoyée sous la forme d'un timestamp Unix.

1 votes

@zod Si vous lisez un peu plus loin que les premières lignes, vous comprendrez peut-être mieux. Allez aussi un peu dans les commentaires.

1 votes

Ce n'est pas une date de création. C'est tout ce que j'ai dit :-)

27voto

Rakesh Dongarwar Points 337

Voici l'exemple de code tiré de la documentation PHP ici : https://www.php.net/manual/en/function.filemtime.php

// outputs e.g.  somefile.txt was last changed: December 29 2002 22:16:23.

$filename = 'somefile.txt';

if (file_exists($filename)) {

    echo "$filename was last modified: " . date ("F d Y H:i:s.", filemtime($filename));
}

Le code spécifie le nom du fichier, puis vérifie s'il existe et affiche ensuite l'heure de modification à l'aide de la fonction filemtime() .

filemtime() prend 1 paramètre qui est le chemin d'accès au fichier, celui-ci peut être relatif ou absolu.

4 votes

Rakesh, s'il vous plaît, expliquez votre code, ne vous contentez pas de poster un code et d'attendre que les gens le comprennent.

2 votes

Bien que ce post de code seul puisse répondre à la question, veuillez ajouter une explication de la raison pour laquelle il le fait. Cela aidera les futurs lecteurs à évaluer la réponse en fonction de leur situation.

1 votes

La fonction filemtime() renvoie l'heure de modification.

8voto

mrwooster Points 4210

Malheureusement, si vous travaillez sous Linux, vous ne pouvez pas accéder à ces informations car seule la date de dernière modification est enregistrée.

Cela dépend légèrement de votre système de fichiers. Je sais que ext2 et ext3 ne supportent pas le temps de création mais je pense que ext4 le fait.

-3voto

SDukla Points 17

Je sais que ce sujet est super vieux, mais, au cas où quelqu'un cherche une réponse, comme moi, je poste ma solution.

Cette solution fonctionne SI cela ne vous dérange pas d'avoir quelques données supplémentaires au début de votre fichier.

En gros, l'idée est de, si le fichier n'existe pas, de le créer et d'ajouter la date du jour à la première ligne. Ensuite, vous pouvez lire la première ligne avec fgets(fopen($file, 'r')) et le transformer en un DateTime ou autre (vous pouvez évidemment l'utiliser brut, à moins que vous ne l'ayez enregistré dans un format bizarre) et voilà - vous avez votre date de création ! Par exemple, mon script pour rafraîchir mon fichier journal tous les 30 jours ressemble à ceci :

if (file_exists($logfile)) {
            $now = new DateTime();
            $date_created = fgets(fopen($logfile, 'r'));
            if ($date_created == '') {
                file_put_contents($logfile, date('Y-m-d H:i:s').PHP_EOL, FILE_APPEND | LOCK_EX);
            }
            $date_created = new DateTime($date_created);
            $expiry = $date_created->modify('+ 30 days');
            if ($now >= $expiry) {
                unlink($logfile);
            }
        }

5 votes

Pourquoi faut-il modifier ou même supprimer un fichier pour obtenir la date ? Cela ne semble pas être une solution au problème initial.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X