Traitement des erreurs.

Le
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
  • Partager ce contenu :
Vos réponses
Trier par : date / pertinence
Olivier Miakinen
Le #26548266
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 ' .'+-&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
Le #26549008
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
Poster une réponse
Anonyme