Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Copier une image par FTP d'un serveur a un autre => crise de nerf

4 réponses
Avatar
Stephane
Bonjour,

Je ne comprends plus!!!!

Je chercher depuis plus de 4 heures pour faire fonctionner un transfère FTP entre 2 serveurs.
Il s'agit d'une image générée par GD2 en png.

1. Le script doit être sur le serveur recevant le fichier? Je pense que c'est vrai
2. Lorsque que je fait le transfère en écrivant le nom du fichier dans le script ça fonctionne!!!
3. Lorsque que je lance le script dans son fonctionnement normal, le transfère ne s'effectue pas!!
4. Je copie l'url du serveur distant et le copie dans le navigateur, l'image est visible ?!?!?
5. J'ai fait une vérification sur la ressource, is_file => FALSE, is_readable => FALSE

Est-ce que quelqu'un à eu des problèmes pour faire un transfère d'image après la création avec la librairie GD?

Je me suis dit peut être que l'image n'étais pas formée que ftp_put() voulais déjà envoyer l'image. J'ai ajouter après
le traitement un sleep(10); de 10 secondes, rien n'a changé.

J'ai essayer les modes de transfère FTP_BINARY, FTP_ASCII et FTP_IMAGE, aucun résultat.

J'ai aussi essayer avec ftp_nb_put , aucun résultat.

<?PHP

$repertoire="/images/cartes/";
$IdImage=$Id_image.".png";
$source_file="http://serveur.distant.net/velo-passion".$repertoire.$IdImage;
$destination_file="http://www.velo-passion.com".$repertoire.$IdImage;

// création de la connexion
$conn_id = ftp_connect($ftp_server);
// authentification avec nom de compte et mot de passe
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// vérification de la connexion
if ((!$conn_id) || (!$login_result)) {
echo "La connexion FTP a échoué!";
echo "Tentative de connexion à $ftp_server avec $ftp_user_name";
die;
} else {
echo "Connected to $ftp_server, for user $ftp_user_name";
}
// téléchargement d'un fichier
$upload = ftp_put($conn_id, $repertoire.$IdImage, $source_file, FTP_BINARY );
// Vérification de téléchargement
if (!$upload) {
echo "Le téléchargement de $source_file sur FTP a échoué! $upload";
} else {
echo "Téléchargement de $source_file sur $ftp_server en $destination_file";
}
// fermeture de la connexion FTP.
ftp_close($conn_id);

?><img src="<?=$source_file;?>" border="0" > <?PHP // ici l'image est affichée!!


J'ai aussi essayer avec $upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY ); // rien



Des idées??? par moi n'en a plus.......


Stéphane
La souplesse d'esprit permet de s'adapter dans toutes circonstances.

http://www.velo-passion.com pour les fans de vélo

--

4 réponses

Avatar
Paul Delannoy
Stephane a écrit:
Bonjour,

Je ne comprends plus!!!!

Je chercher depuis plus de 4 heures pour faire fonctionner un transfère FTP entre 2 serveurs.
Il s'agit d'une image générée par GD2 en png.

1. Le script doit être sur le serveur recevant le fichier? Je pense que c'est vrai
2. Lorsque que je fait le transfère en écrivant le nom du fichier dans le script ça fonctionne!!!
3. Lorsque que je lance le script dans son fonctionnement normal, le transfère ne s'effectue pas!!
4. Je copie l'url du serveur distant et le copie dans le navigateur, l'image est visible ?!?!?
5. J'ai fait une vérification sur la ressource, is_file => FALSE, is_readable => FALSE


Ne va pas plus loin : ressource que l'"user web" n'a pas le droit de
lire : comment veux tu qu'il puisse l'afficher ?

--

Avatar
John GALLET
Bonjour,

1. Le script doit être sur le serveur recevant le fichier? Je pense que c'est vrai
Recevant QUEL fichier ? C'est pas clair ton histoire.


2. Lorsque que je fait le transfère en écrivant le nom du fichier dans le script ça fonctionne!!!
Donc ça penche vers un problème de passage de paramètre ou de chemin.


4. Je copie l'url du serveur distant et le copie dans le navigateur, l'image est visible ?!?!?
Donc elle a bien été transférée. Logique si tu as fait un test manuel

juste avant.

5. J'ai fait une vérification sur la ressource, is_file => FALSE, is_readable => FALSE
Laquelle de ressource ?


$repertoire="/images/cartes/";
C'est la source. Ce serait pas plutôt $HOME/images/cartes ou

./images/cartes ?

$upload = ftp_put($conn_id, $repertoire.$IdImage, $source_file, FTP_BINARY );
Dès lors que tu réussis à faire le transfert en remplaçant

$repertoire.$IdImage par une valeur en dur, ce n'est pas un problème de
droits en écriture à l'arrivée.
Donc c'est que, d'une manière ou d'une autre, $repertoire.$IdImage est
inaccessible.
Que donne le test :
clearstatcache();
if(file_exists($repertoire.$IdImage)) echo "$repertoire.$IdImage lisible";
else echo "$repertoire.$IdImage illisible";

a++;
JG

--

Avatar
Stephane
"Paul Delannoy" a écrit:

Ne va pas plus loin : ressource que l'"user web" n'a pas le droit de
lire : comment veux tu qu'il puisse l'afficher ?


Est-ce une sécurité sur le serveur distant?

Peut-on changer les droits?

Stéphane

--

Avatar
Stephane
"John GALLET" a écrit:
Bonjour,

1. Le script doit être sur le serveur recevant le fichier? Je pense que c'est vrai
Recevant QUEL fichier ? C'est pas clair ton histoire.



Oui, c'est possible. Sur ce cas, j'ai vraiment de la peine.

2. Lorsque que je fait le transfère en écrivant le nom du fichier dans le script ça fonctionne!!!
Donc ça penche vers un problème de passage de paramètre ou de chemin.



Aujourd'hui ça fonctionne plus!!!
Hier, pendant que je faisais mes tests, la configuration du serveur à été changée. Je ne m'en suis pas rendu compte et
je m'évertuais à essayer toutes les solutions pour arriver à mes fins.

Je pense que Paul a raison, c'est un problème de droit sur "user web". J'ai demandé à l'hébergeur ce qu'il en était.
J'attend la réponse.

a++;
JG



Maintenant, si je résume. C'est plus qu'une question de droit de lecture sur le serveur distant.


--
Stéphane
La souplesse d'esprit permet de s'adapter dans toutes circonstances.

--