Discussion:
Traitement des erreurs.
(trop ancien pour répondre)
kurtz le pirate
2020-06-05 15:02:19 UTC
Permalink
Bonjour,

J'ai ces quelques lignes de code :

<?php
try {
$start_dir = '.'.DIRECTORY_SEPARATOR ;
$dir = new RecursiveDirectoryIterator($start_dir,
FilesystemIterator::SKIP_DOTS);
$cur_ent = new
RecursiveIteratorIterator($dir,RecursiveIteratorIterator::SELF_FIRST,RecursiveIteratorIterator::CATCH_GET_CHILD);
foreach( $cur_ent as $file) {
echo '<code>' . str_repeat('&nbsp;',$cur_ent->getDepth()*6)
.'+-&nbsp;' .($file->isDir()?'<b>['.substr(sprintf("%o",
$file->getPerms()), -4).']
'.$file->getFileName().'</b>':'['.substr(sprintf("%o",
$file->getPerms()), -4).'] '.$file->getFileName()) . '</code><br>' .
PHP_EOL;
}
}

catch (Exception $err) {

}

Ca marche plutôt bien... sauf quand ça tombe sur un dossier sur lequel
je n'ai pas les droits. je script s'arrête alors.

Je ne sais pas comment faire pour lui dire de continuer sur le reste de
l'arbo. Mettre quoi dans le catch {} ?


Merci de votre aide.
--
kurtz le pirate
compagnie de la banquise
Olivier Miakinen
2020-06-06 01:01:59 UTC
Permalink
Bonjour,
Post by kurtz le pirate
<?php
try {
$start_dir = '.'.DIRECTORY_SEPARATOR ;
$dir = new RecursiveDirectoryIterator($start_dir,
FilesystemIterator::SKIP_DOTS);
$cur_ent = new
RecursiveIteratorIterator($dir,RecursiveIteratorIterator::SELF_FIRST,RecursiveIteratorIterator::CATCH_GET_CHILD);
foreach( $cur_ent as $file) {
echo '<code>' . str_repeat('&nbsp;',$cur_ent->getDepth()*6)
.'+-&nbsp;' .($file->isDir()?'<b>['.substr(sprintf("%o",
$file->getPerms()), -4).']
'.$file->getFileName().'</b>':'['.substr(sprintf("%o",
$file->getPerms()), -4).'] '.$file->getFileName()) . '</code><br>' .
PHP_EOL;
}
}
catch (Exception $err) {
}
Ca marche plutôt bien... sauf quand ça tombe sur un dossier sur lequel
je n'ai pas les droits. [l]e script s'arrête alors.
Je ne sais pas comment faire pour lui dire de continuer sur le reste de
l'arbo.
Tu pourrais commencer par mettre le try ... catch à l'intérieur de la
boucle foreach plutôt qu'à l'extérieur.

Et si ça ne marche pas, alors peut-être faudra-t-il que tu fasses toi-même
une boucle récursive répertoire par répertoire.
--
Olivier Miakinen
kurtz le pirate
2020-06-13 13:28:10 UTC
Permalink
Post by Olivier Miakinen
...
Tu pourrais commencer par mettre le try ... catch à l'intérieur de la
boucle foreach plutôt qu'à l'extérieur.
...
Merci Olivier, cette solution marche très bien.
--
kurtz le pirate
compagnie de la banquise
Continuer la lecture sur narkive:
Loading...