1 2 3 4
| while($file = ftp_nlist($conn_id, "./Prod_Output") !== false);
var_dump($file); {
is_dir($source . '/' . $file); |
Ici, Il n'y a pas de raison d'utiliser une boucle while. La fonction ftp_nlist() renvoie directement un tableau avec le contenu du répertoire.
D'autre part lorsque tu veux faire une affectation dans un test, pour une question de priorité des opérateurs (ordre dans lequel PHP évalue les différents opérateurs d'une expression), tu dois l'écrire de cette manière:
if ( false !== $truc = machin($bidule) ) { /*...*/ }
ou alors ajoute des parenthèses pour forcer l'ordre d'évaluation:
if ( ($truc = machin($bidule)) !== false ) { /*...*/ }
car en écrivant
if ( $truc = machin($bidule) !== false ) { /*...*/ }
$truc contiendra le résultat de la comparaison entre machin($bidule) et false.
Comme tu as mis un ; immédiatement après ton test while, la fonction ftp_nlist est exécutée indéfiniment jusqu'à ce que le serveur ftp t'envoie boulé.
Tu ne peux pas utiliser is_dir qui va chercher le chemin que tu lui fournies localement et pas sur le ftp. En plus en dehors d'un test ou d'une affectation, cette fonction ne sert à rien.
Pour vérifier qu'il s'agit bien d'un fichier, tu pourrais utiliser ftp_mlsd() à la place de ftp_nlist(), ce qui te donnera pour chaque entrée un tableau contenant toutes ses caractéristiques dont le type.
Partager