Traitement des erreurs.

2 réponses
Avatar
kurtz le pirate
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

2 réponses

Avatar
Olivier Miakinen
Bonjour,
Le 05/06/2020 17:02, kurtz le pirate a écrit :
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. [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
Avatar
kurtz le pirate
On 06/06/2020 03:01, Olivier Miakinen wrote:
...
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