Copier une image par FTP d'un serveur a un autre => crise de nerf
Le
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
--
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
--

Poser une question


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 ?
--
juste avant.
./images/cartes ?
$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
--
Est-ce une sécurité sur le serveur distant?
Peut-on changer les droits?
Stéphane
--
Oui, c'est possible. Sur ce cas, j'ai vraiment de la peine.
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.
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.
--