Existe-t-il un moyen en PHP ou Perl de trouver tous les liens symboliques vers le fichier actuel?Comment trouver des liens symboliques vers le fichier actuel?
Répondre
Sans traverser le système de fichiers à la recherche de tous les liens symboliques, puis vérifier leur destination, non. Mais si vous voulez toujours faire cela, c'est plutôt simple:
use strict;
use warnings;
use File::Find;
my $target = 'the filename you want to find links to';
finddepth(
sub {
return if not -l $File::Find::name;
print "found $File::Find::name!\n" if readlink($File::Find::name) eq $target;
},
'/'
);
Pas sans marcher le système de fichiers ou en utilisant find
(qui lui-même marche le FS). Les liens symboliques ne sont pas réellement liés à un fichier de manière significative; ils contiennent juste un chemin vers le fichier réel. Ces liens peuvent être n'importe où, et le système d'exploitation ne les connaît pas nécessairement jusqu'à ce qu'ils soient utilisés dans un chemin.
Pas sans avoir à chercher dans tout le système de fichiers.
Les liens symboliques (dans Linux au moins) sont essentiellement des pointeurs. Ils pointent d'un endroit à l'autre, mais l'endroit qu'ils pointent n'a aucun moyen de savoir ce qui le désigne sans une recherche exhaustive.
Vous pouvez le faire en effectuant une recherche complète, mais cela peut prendre beaucoup de temps en fonction de votre système.
En PHP, vous pourriez - en théorie - utiliser un RecursiveDirectoryIterator et le définir pour traverser de la racine du système de fichiers. Vous pouvez ensuite vérifier si le currently iterated filesystem item is a link et le cas échéant, utiliser readlink pour voir où il pointe:
$fsi = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator('/'),
RecursiveIteratorIterator::SELF_FIRST
);
foreach ($fsi as $fso) {
if ($fso->isLink()) {
echo readlink($fso->getPathname());
}
}
Dans la pratique, vous serez probablement pas autorisé à faire de l'utilisateur exécutant le script PHP.
Merci pour l'aide :-) – Eric
- 1. Comment copier des liens symboliques en Perl?
- 2. convertir des liens symboliques relatifs en liens symboliques absolus
- 3. Création de liens symboliques vers des branches dans SVN?
- 4. Les liens symboliques dans Windows
- 5. Contrôler le traitement des liens symboliques par eGit
- 6. Comment créer des liens symboliques dans le fichier de sortie .tar.gz?
- 7. Trouver des liens vers une page
- 8. Suppression d'un dossier contenant des liens symboliques
- 9. listFiles() de Fichier ne fonctionne pas sur les liens symboliques?
- 10. Téléchargement de fichiers PHP avec des liens symboliques
- 11. Trouver le fichier actuel dans IntelliJ
- 12. Comment avoir suivi Git 1.6 « au-delà des liens symboliques »
- 13. CarbonEmacs, liens symboliques et dired-find-file
- 14. Lien dur et liens symboliques dans Unix
- 15. Apache2, Git, Capistrano & Rails - créer des liens symboliques
- 16. Apache Virtual Host dans Windows - comment gérer les liens symboliques?
- 17. Script Bash pour créer des liens symboliques en toute sécurité?
- 18. Python os.walk + suivez les liens symboliques
- 19. Rechercher des liens symboliques vers un certain répertoire ou l'un de ses sous-répertoires
- 20. Comment faire Aptana (Eclipse) ne pas suivre les liens symboliques?
- 21. Ignorer les liens symboliques dans .gitignore
- 22. Meilleur moyen de trouver automatiquement des liens vers votre contenu?
- 23. Comment trouver le terminal virtuel actuel
- 24. Comment trouver le contrôleur uiview actuel?
- 25. Comment trouver le classpath actuel de jvm?
- 26. Comment trouver le contrôleur uiview actuel
- 27. Comment trouver le niveau de transaction actuel?
- 28. Comment trouver le InternalFrame ciblé actuel?
- 29. Comment puis-je déréférencer les liens symboliques dans bash?
- 30. Nokogiri trouver seulement des liens entrants
Merci, j'espérais éviter de scanner tout le système de fichiers, mais j'apprécie le code :-) – Eric