Y a-t-il d'autres solutions que ftp_mdtm()
pour obtenir la date/heure de modification du fichier à l'aide des fonctions FTP?PHP ftp_mdtm() ne supporte pas par le serveur?
Répondre
Depuis PHP 5.1, vous pouvez simplement utiliser filemtime()
avec un chemin de fichier ftp://...
valide.
Exemple:
$user = 'peter';
$password = 'secret123';
$mtime = filemtime("ftp://$user:[email protected]/some_file.txt");
Le format d'une sortie de la liste FTP n'a pas été normalisé pour l'analyse de l'ordinateur, donc si vous souhaitez prendre en charge tous les possibles serveurs FTP, vous devez venir avec votre propre analyseur.
Mais commençons par le plus simple: PHP supporte un FTP wrapper. Depuis PHP 5.1, vous pouvez utiliser filemtime()
pour récupérer le fichier de modification d'un fichier distant en utilisant ftp://user:[email protected]/path/file
comme argument.
Vous pouvez également essayer d'utiliser curl_getinfo()
de l'extension PHP cURL.
Si cela ne fonctionne pas parce que votre serveur FTP est AIX, VMS, EBCDIC ou un autre type "exotique", vous pouvez analyser la liste du répertoire manuellement. Tout d'abord, si vous êtes très chanceux, le serveur FTP prend en charge la commande MLST
ou MLSD
. Vous pouvez les publier en utilisant ftp_raw()
en PHP. La sortie est expliquée dans RFC 3659. La date peut facilement être analysée et est retournée en UTC. Si vous avez moins de chance, vous devez revenir à la commande LIST
utilisée par ftp_rawlist()
. Il n'y a pas de standard sur la façon dont la sortie ressemble, vous avez donc besoin d'heuristiques. FileZilla est très bon pour gérer les serveurs FTP hérités. Si vous avez vraiment besoin d'un analyseur et avez un peu de temps, il suffit de porter FileZilla's directory listing parser à PHP.
pls donner un exemple –