Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/09/2006, 21h05   #1
Membre du Club
 
Inscription : avril 2006
Messages : 265
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 265
Points : 66
Points : 66
Par défaut [FTP] Fonctions FTP de PHP

Bonjour,
voila j'essaye d'uploader un fichier sur un compte free depuis une page hébergée sur un autre FTP.
Pour cela voila le script que j'ai trouvé après avoir fouiller un peu sur internet :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 
<?php
 
$ftp_server="ftpperso.free.fr";
$ftp_user_name="*****";
$ftp_user_pass="****";
$source_file="C:\Telechargement\Leucate_plage.pdf";
$destination_file="./Photos/Leucate_plage.pdf";
 
// 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 "Connecté à $ftp_server, avec $ftp_user_name<br>";
    }
 
// Téléchargement d'un fichier.
$upload = ftp_put($conn_id, "$destination_file", "$source_file", FTP_BINARY);
 
// Vérification de téléchargement
if (!$upload) {
        echo "Le téléchargement Ftp a échoué!";
    } else {
        echo "Téléchargement de $source_file sur $ftp_server en $destination_file";
    }
 
// Fermeture de la connexion FTP.
ftp_quit($conn_id);
 
?>
Voici ce que me renvoie la page :
Code :
1
2
3
 
Connecté à ftpperso.free.fr, avec *****
Le téléchargement Ftp a échoué!
Donc je me demande si ça ne serait pas un problème dans la définition des chemins mais après avoir en avoir essayés de multiples ça ne fonctionne toujours pas. Je précise que jai mis le droit d'écriture sur le dossier de destination.

Voila quelqu'un peut-il m'aider ?
hacksi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2006, 21h29   #2
Invité(e)
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
pourquoi tu passes pas par les routines upload

vas voir ==>>

http://www.vulgarisation-informatiqu...upload-php.php

  Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2006, 21h32   #3
Membre du Club
 
Inscription : avril 2006
Messages : 265
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 265
Points : 66
Points : 66
En fait au départ j'utilisé cela, mais j'avais le message d'erreur suivant :
Code :
1
2
 
Warning: move_uploaded_file(http://****.free.Fr/Photos/9.jpg): failed to open stream: HTTP wrapper does not support writeable connections.
Cependant quand j'utilisais ce code directement sur le compte free cela fonctionnait, mais dès que j'utilisais depuis un autre FTP ça me marchait pas, j'en ai donc déduis que cela n'était pas possible et après avoir consulté sur internet, on m'a dit d'utiliser les fonctions FTP...
hacksi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2006, 21h36   #4
Invité(e)
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
prends le code tel qu'il est sur le site

ca marche chez free

  Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2006, 21h37   #5
Membre du Club
 
Inscription : avril 2006
Messages : 265
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 265
Points : 66
Points : 66
oui mais c'est pas ça le problème le mien aussi marche chez free.
Le truc c'est que j'essaye d'uploader un fichier sur un compte free depuis une page stockée sur un autre FTP autre que free, c'est ce que fait ton script ?
hacksi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2006, 06h08   #6
Invité(e)
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
en fait le script upload le fichier dans un réperteroire ou les droits d'acces sont en ecriture...


au fait tu as vérifié les droits du dossier sur lequel tu uploads le fichier ?
  Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2006, 23h24   #7
Membre du Club
 
Inscription : avril 2006
Messages : 265
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 265
Points : 66
Points : 66
Comme je l'ai précisé dans mon premier message, oui j'ai bien mis les droits en écritures.
hacksi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2006, 02h04   #8
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Le script apporté par le lien permet l'upload d'un fichier sur le serveur à partir d'une page du serveur lui-même. Si tu souhaites upload des fichiers à distance il faut effectivement passer par les fonctions FTP, comme tu l'as fait .

Maintenant pour ce qui est ton message d'erreur je vais plutot te diriger vers ce lien : Comment réaliser un formulaire d'upload via FTP ?

Aussi il faudrait vérifier que ton fichier est bien dans le répertoire que tu lui dit. Donc essayes avec le formulaire d'upload, sélectionne ton fichier et viens nous revoir pour nous dire le résultat.
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2006, 08h50   #9
Invité(e)
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Citation:
Envoyé par Kerod
Le script apporté par le lien permet l'upload d'un fichier sur le serveur à partir d'une page du serveur lui-même. Si tu souhaites upload des fichiers à distance il faut effectivement passer par les fonctions FTP, comme tu l'as fait .

Maintenant pour ce qui est ton message d'erreur je vais plutot te diriger vers ce lien : Comment réaliser un formulaire d'upload via FTP ?

Aussi il faudrait vérifier que ton fichier est bien dans le répertoire que tu lui dit. Donc essayes avec le formulaire d'upload, sélectionne ton fichier et viens nous revoir pour nous dire le résultat.
Comme tu l'indiques il faut effectivement passer par des fonctions ftp.
Je suis pas d'accord avec toi , d'autres manières existent beaucoup plus simples comme :

<form action="upload.php" method="post" enctype="multipart/form-data">
<p><input type="file" name="fichier_source" /><input type="submit" value="Envoyer" /></p>
</form>

d'ailleurs j'ai fait l'essai ca marche chez free.

L'experience du ftp est beaucoup plus lourde.

cordialement.
  Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2006, 15h30   #10
Membre du Club
 
Inscription : avril 2006
Messages : 265
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 265
Points : 66
Points : 66
Donc je viens d'assayer avec le formulaire de developpez donc voici le code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
 
<?php
 
define('CFG_FTP_SERVER', 'ftpperso.free.fr');	// Adresse du FTP
define('CFG_FTP_USERNAME', '*******');	// Nom d'utilisateur
define('CFG_FTP_PASSWORD', '***********');	// Mot de passe
define('CFG_FTP_TIMEOUT', 2);		// Définition du délai de connexion en secondes
 
if(!empty($_FILES['fichier']) && $_FILES['fichier']['error'] == UPLOAD_ERR_OK && is_uploaded_file($_FILES['fichier']['tmp_name']))
{
  $fichier_a_uploader = $_FILES['fichier']['tmp_name'];
  $dossier_destination = '/' . $_FILES['fichier']['name'];
 
  $conn_id = ftp_connect(CFG_FTP_SERVER);	// Création de la connexion au FTP
 
  if(empty($conn_id))
  {
    echo 'Échec de connexion à ' . CFG_FTP_SERVER;
  }
  else
  {
    // Définition du délai de connexion à 2 secondes
    ftp_set_option($conn_id, FTP_TIMEOUT_SEC, CFG_FTP_TIMEOUT);
 
    echo "Connecté au FTP\n<br>";
 
    // Identification avec le nom d'utilisateur et le mot de passe
    $login_result = ftp_login($conn_id, CFG_FTP_USERNAME, CFG_FTP_PASSWORD);
 
    if(!$login_result)
    {
      echo "Échec d'identification à " . CFG_FTP_SERVER;
    }
    else
    {
      // Tentative de chargement sur le serveur FTP
      if(ftp_put($conn_id, $dossier_destination, $fichier_a_uploader, FTP_BINARY))
      {
        echo "Le fichier $fichier_a_uploader a été chargé avec succès\n";
      }
      else
      {
        echo "Il y a eu un problème lors du chargement du fichier $fichier_a_uploader\n";
      }
    }
    // Fermeture de la connexion
    ftp_close($conn_id);
  }
}
 
?>
et voici ce que ça me renvoit :
Code :
1
2
3
 
 
Fatal error: Call to undefined function: ftp_connect() in /mnt/116/sdb/3/c/*******/uploadftp.php on line 13
.......
hacksi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2006, 15h40   #11
Membre émérite
 
Avatar de ozzmax
 
Inscription : novembre 2005
Messages : 986
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : novembre 2005
Messages : 986
Points : 863
Points : 863
Envoyer un message via MSN à ozzmax
est ce que ca pourrais venir de la déclaration de tes constantes?

si tu n'urilise pas de constante mais bien des vrariables...ca fait la meme chose?

Code :
1
2
3
4
 
$serveur_ftp = 'ftpperso.free.fr';
 
$conn_id = ftp_connect($serveur_ftp) or die("Impossible de se connecter au serveur $serveur_ftp");
?
__________________
La perfection n'est pas un but, l'amélioration constante devrait l'être!
La position des Développeurs de developpez avec les explications
ozzmax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2006, 15h45   #12
Membre du Club
 
Inscription : avril 2006
Messages : 265
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 265
Points : 66
Points : 66
c'est ce que j'ai essayé mais ça ne change rien, c'est bizarre....
hacksi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2006, 15h58   #13
Membre émérite
 
Avatar de ozzmax
 
Inscription : novembre 2005
Messages : 986
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : novembre 2005
Messages : 986
Points : 863
Points : 863
Envoyer un message via MSN à ozzmax
je sais que ca change surment rien car tu es en bonne version mais...ta version de php est bien supérieur ou égale a 3.0.13 ?
__________________
La perfection n'est pas un but, l'amélioration constante devrait l'être!
La position des Développeurs de developpez avec les explications
ozzmax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2006, 15h59   #14
Membre du Club
 
Inscription : avril 2006
Messages : 265
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 265
Points : 66
Points : 66
PHP Version 4.3.10-16 ...
hacksi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2006, 16h13   #15
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Citation:
Envoyé par gseverin
Comme tu l'indiques il faut effectivement passer par des fonctions ftp.
Je suis pas d'accord avec toi , d'autres manières existent beaucoup plus simples comme :

<form action="upload.php" method="post" enctype="multipart/form-data">
<p><input type="file" name="fichier_source" /><input type="submit" value="Envoyer" /></p>
</form>

d'ailleurs j'ai fait l'essai ca marche chez free.

L'experience du ftp est beaucoup plus lourde.

cordialement.
Ok mais qu'est-ce que fait ceci exactement :
Code :
1
2
3
 <form action="upload.php" method="post" enctype="multipart/form-data">
<p><input type="file" name="fichier_source" /><input type="submit" value="Envoyer" /></p>
</form>
Il upload le fichier dans un répertoire temporaire du serveur d'execution et non un serveur distance. Alors comment veux-tu avec cette méthode passer un fichier d'un serveur à un autre si tu utilises aucunes méthodes ftp . Si tu as un remède je veux bien le connaitre.
D'ailleurs si tu avais regarder le code dans le lien tu aurais remarqué qu'il y a le même formulaire et ensuite l'upload par ftp.


Sinon et comme ceci :
Code :
1
2
3
$serveur_ftp = 'ftpperso.free.fr';
 
$conn_id = ftp_connect("$serveur_ftp") or die("Impossible de se connecter au serveur $serveur_ftp");
Ce qui est étrange c'est que le code donné dans le lien fonctionne très bien sur différents serveurs. mais il est vrai que j'ai pas testé sous Free
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2006, 16h15   #16
Membre du Club
 
Inscription : avril 2006
Messages : 265
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 265
Points : 66
Points : 66
haaa merci kerod de bien rectifier ma recherche
hacksi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2006, 17h31   #17
Invité(e)
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Citation:
Envoyé par Kerod
Ok mais qu'est-ce que fait ceci exactement :
Code :
1
2
3
 <form action="upload.php" method="post" enctype="multipart/form-data">
<p><input type="file" name="fichier_source" /><input type="submit" value="Envoyer" /></p>
</form>
Il upload le fichier dans un répertoire temporaire du serveur d'execution et non un serveur distance. Alors comment veux-tu avec cette méthode passer un fichier d'un serveur à un autre si tu utilises aucunes méthodes ftp . Si tu as un remède je veux bien le connaitre.
D'ailleurs si tu avais regarder le code dans le lien tu aurais remarqué qu'il y a le même formulaire et ensuite l'upload par ftp.


Sinon et comme ceci :
Code :
1
2
3
$serveur_ftp = 'ftpperso.free.fr';
 
$conn_id = ftp_connect("$serveur_ftp") or die("Impossible de se connecter au serveur $serveur_ftp");
Ce qui est étrange c'est que le code donné dans le lien fonctionne très bien sur différents serveurs. mais il est vrai que j'ai pas testé sous Free

Et on va pas targiverser pendant 30 ans , je te dis que si tu utilises les routines php ca marche plus facilement que de faire du ftp .....

je te donne la routine de transfert

Code :
1
2
3
4
5
6
7
8
9
10
11
12
if(move_uploaded_file($_FILES['fichier_source']['tmp_name'], '../../../../multimedia/'.$dossier_photos.'/toto.jpeg'))
{
//Le fichier a été uploadé correctement
include("index.php");
}
else
{
//Erreur
echo 'Erreur lors de la copie du fichier';
}
 
}

tu lui donnes un fichier source et un repertoire cible et voila le tour est joué
et en plus de ca il passe bien sur par un repertoire temporaire


de + j'ai essayé chez free et ca marche .....

a+
  Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2006, 17h38   #18
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Effectivement je vois pas pourquoi on va débattre vu que la solution que tu proposes n'est pas celle attendue par le posteur :
Citation:
Bonjour,
voila j'essaye d'uploader un fichier sur un compte free depuis une page hébergée sur un autre FTP.
Pour cela voila le script que j'ai trouvé après avoir fouiller un peu sur internet :
Donc c'est de serveur à serveur, et non sur le seruveur lui même
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2006, 17h44   #19
Membre du Club
 
Inscription : avril 2006
Messages : 265
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 265
Points : 66
Points : 66
lol oui, je veux faire de serveur à serveur... donc apparament la procédure "standard" ne fonctionne pas pour cela !
hacksi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2006, 16h26   #20
Membre du Club
 
Inscription : avril 2006
Messages : 265
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 265
Points : 66
Points : 66
Personne ne peut m'aider ?
hacksi est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h21.


 
 
 
 
Partenaires

Hébergement Web