Bonjour à tous,

Je rencontre un problème lorsque j'essaie de télécharger un fichier depuis un FTP.

                    $ftp = Configure::read("Sales.ftpContracts");
                    $conn_id = ftp_connect($ftp['server']);
                    $login_result = ftp_login($conn_id, $ftp['username'], $ftp['password']);
                    ftp_pasv($conn_id, true);
                    if ((!$conn_id) || (!$login_result)){
                        ftp_close($conn_id);
                        return false;
                    }
                    $local_file = 'LocalRapport.doc';
                    $server_file = "Rapport.doc";
                    if (ftp_get($conn_id, $local_file, $server_file, FTP_BINARY)) {
                        echo "Le fichier $local_file a été écrit avec succès\n";
                        exit();
                    } else {
                        echo "Il y a un probleme";
                        exit();
                    }
                    ftp_close($conn_id);
                } else {
                    echo "Le fichier n'est pas accessible en écriture.";
                    exit;
                }

Cependant, il ne passe pas la condition "ftpget".
J'ai vérifié la variable de connexion et elle me renvoie bien "true".

Dans les logs, voilà ce que je reçois :

2015-06-18 11:13:09 Warning: Warning (2): ftp_get(): Can't open Rapport.doc: No such file or directory in [/home/fricopycrp/sales/src/Controller/Admin/SalesCustomersController.php, line 655]
Trace:
Cake\Error\BaseErrorHandler::handleError() - CORE/src/Error/BaseErrorHandler.php, line 138
ftp_get - [internal], line ??
App\Controller\Admin\SalesCustomersController::customer_report() - APP/Controller/Admin/SalesCustomersController.php, line 655
App\Controller\Admin\SalesCustomersController::test() - APP/Controller/Admin/SalesCustomersController.php, line 591
Cake\Controller\Controller::invokeAction() - CORE/src/Controller/Controller.php, line 404
Cake\Routing\Dispatcher::_invoke() - CORE/src/Routing/Dispatcher.php, line 114
Cake\Routing\Dispatcher::dispatch() - CORE/src/Routing/Dispatcher.php, line 87
[main] - ROOT/webroot/index.php, line 37

Il semblerait qu'il n'arrive pas ouvrir le fichier .doc ou il ne le trouve pas. J'ai essayé de me repositioner grâce à ftp_chdir($conn_id, $dir); en y listant les fichiers/dossiers, je n'ai rien d'affiché.

Quelqu'un aurait-il une idée à propos de ceci ?

Je vous remercie pour votre aide.

DR

6 réponses


Huggy
Réponse acceptée

Ok Rapport.doc' c'est côté serveur,
Lorsque tu te connectes, tu arrives dans un directory
Est-ce le bon ?
tu peux le verifier avec ftp_pwd
Si c'est pas le bon, déplace toi avec ftp_chdir
Si ce n'est pas un pb de directory, c'est un pb de droits en lecture ou encore plus ballot un pb de minuscule/Majuscule

ftp n'arrive pas à créer le fichier en local, soit parcequ'il n'a pas les droits d'écriture soit parceque le chemin local n'existe pas (ftp ne crée pas automatiquement le chemin cible).
Tu es sur quel système ?

ciramor
Auteur

Salut Huggy.

J'utilise Windows 7. J'ai une question qui peut paraître stupide mais... Si on spécifie aucun path, c'est à dire, on écrit $local_file = 'LocalRapport.doc';, où est-ce qu'il va donc l'enregistrer en local, du moins, essayer de l'enregistrer ?

Il va l'écrire dans le dossier de ton script php

ciramor
Auteur

Okay, mais pourquoi ne trouve-t'il pas le fichier Rapport.doc sur le FTP ?
:(

ciramor
Auteur

Oula tout est réglé. Désolé Huggy de t'avoir fait perdre du temps... les variables lues dans Configure::read étaient... obsolètes
Merci tout de même!