Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : copy() et context [ Server Web / Autre ] (kishkaya)

mercredi 22 août 2007 à 11:40:30 | copy() et context

kishkaya

Bonjour,
Afin de transferé des fichier d'un serveur vers un autre j'utilise le protocole FTP.
La fonction copy autorisant les url distante je voulais m'en servir.

Malheureusement l'envoie de fichier ftp echoue quand on veut ecraser un fichier existant. Il est indiquer sur php.net :

"Si vous devez réécrire des fichiers existants en utilisant ftp, spécifiez l'option overwrite dans le contexte et ouvrez le fichier en écriture".

Or, la fonction copy n'admet pas de contexte, dois je donc comprendre que je n'ai pas d'autre choix que d'utiliser fopen ?

_Marikou

mercredi 22 août 2007 à 12:24:04 | Re : copy() et context

Yoteco

Réponse acceptée !
Salut,

Oui... ou alors regarde d'abord si le fichier existe déjà sur le serveur FTP supprime le et envoie le nouveau fichier.

Ce qui est incompréhensible, c'est que le monde soit compréhensible. (Albert Einstein)

mercredi 22 août 2007 à 14:13:05 | Re : copy() et context

malalam

Administrateur CodeS-SourceS
Réponse acceptée !
Hello,

non :
Note: Depuis PHP 4.3.0, les deux paramètres source et dest peuvent être des URL si les gestionnaires d'URL ont été activés. Voyez la fonction fopen() pour plus de détails. Si dest est une URL, la copie peut échouer si ce protocole ne supporte pas l'écrasement de fichiers existants.

Cela veut dire que si tu fais un truc du genre
copy('ftp://serveurftp1/bla.txt', 'ftp://monftp.com/bla.txt');
il faut que la configuration de ton php le tolère (et que les serveurs aussi évidemment) avec le gestionnaire d'URL. Vois la fonction fopen() pour en savoir plus sur le gestionnaire d'URL et suis les liens. Ca ne veut pas dire que tu dois d'abord utiliser fopen().

Pourquoi n'utilises-tu pas les fonctions ftp_*() dédiées? Ou CURL ?

mercredi 22 août 2007 à 15:00:26 | Re : copy() et context

kishkaya

Bonjour et merci pour vos réponses.
J'utilise la fonction copy et j'arrive à copier sur mon ftp (où j'ai un user anonymous) un fichier depuis mon premier serveur. Malheureusement je ne peux copier qu'un fichier qui n'existe pas déjà.
Le protocole FTP accepte l'ecrasement de fichier. Mais je ne sais pas comment le mettre par default.

1- J'ai utilisé copy car je savais qu'elle acceptait ce protocole et les adresses distantes. De plus avec les fonction ftp_* le probleme est qu'elles renvoient "true" lorsque l'ordre a été PASSE sur le serveur FTP et non pas quand il a été EXECUTE. J'utilise le ftp pour copier des fichiers sons. Puis je lance l'encodage du fichier son à l'aide d'un GET HTTP sur le serveur 2 (celui ou se trouve le FTP). Mais l'encodage plante souvent car le FTP n'a pas fini de copier le fichier son (et cela avec ftp_put ou ftp_fput).

La deuxieme raison qui m'a fait ne pas choisir les fonction ftp_* est celle la :
"Si vous voulez uniquement lire ou écrire un fichier sur un serveur FTP, utilisez plutôt le gestionnaire ftp:// wrapper avec les fonctions de système de fichiers qui fournissent une interface simple et intuitive" (cf php.net)

2- je n'ai pas utilisé curl car je ne sais pas si il est inclu de base en tant qu'extension de php... Et parce que je ne connait pas bien ce module.

Je me renseigne sur Curl. en attendant si vous savez comment mettre le mode Overwrite par defaut pour les protocoles SFTP et FTP je suis tres prenneur.

_Marikou

mercredi 22 août 2007 à 16:34:00 | Re : copy() et context

kishkaya

Mea culpa !!!
Les fonctions FTP marchent tres bien, je m'en suis rendu compte en utilisant libcurl!
En fait le probleme venait du transfert FTP ascii ou binaire.
Avec Curl je desactivais les entetes textuelles et au final le fichier son s'encodait bien une fois l'encodage lancé). Lorsque je les ai activées, l'encodage echoué.
Je viens de retenter avec les fonctions ftp_put/ftp_get ca marche nickel quand on fait la transaction en binaire (FTP_BINARY) !!.

Donc j'ai dit des conneries, ces fonctions renvoient bien true lorsque l'ordre a été EXECUTE.

Merci a vous deux pour votre aide ca marche nickel maintenant.

_Marikou

mercredi 22 août 2007 à 16:37:09 | Re : copy() et context

kishkaya

A titre d'exemple voila comment on fait avec curl pour envoyer un fichier via FTP:

$tosend = fopen('monfichieraenvoyé.wav',r);
$easyhandle = curl_init('ftp://xxx.xxx.xxx.xxx/fichierupload.wav');
curl_setopt($easyhandle, CURLOPT_INFILE, $tosend);
curl_setopt($easyhandle, CURLOPT_UPLOAD, TRUE);
curl_setopt($easyhandle, CURLOPT_TRANSFERTEXT, FALSE);
if (!curl_exec($easyhandle)) { echo 'error'; };
curl_close ($easyhandle);
fclose($tosend);

et pour en telecharger un :
$toget = fopen('fichiertelecharge.wav','w');
$easyhandle=curl_init('ftp://xxx.xxx.xxx.xxx/sondistant.wav');
curl_setopt($easyhandle, CURLOPT_FILE, $toget);
curl_setopt($easyhandle, CURLOPT_UPLOAD, FALSE);
curl_setopt($easyhandle, CURLOPT_TRANSFERTEXT, FALSE);
curl_setopt($easyhandle, CURLOPT_HEADER, 0);
if (!curl_exec($easyhandle)) { echo 'error'; };
curl_close ($easyhandle);
fclose($tosend

_Marikou



Cette discussion est classé dans : fichier, fonction, ftp, context, copy


Répondre à ce message

Sujets en rapport avec ce message

ftp et fichier [ par tombal ] Lorsque je transfert mes fichier php sur le ftp de free, n'importe qui a acces a ces fichier via l'html correspondantce qui n'est pas le cas avec mult ftp_get php [ par CC24 ] bonjour à tous !est-ce que l'un d'entre vous pourrait m'indiquer la syntaxe à utiliser pour télécharger un fichier situé dans un sous-répertoire du ré Upload de fichier [ par whiteknight ] Bonjour,j'ai un problème avec la fonction suivante, elle marche correctement mais ne detecte pas tous les type de fichiers.Elle marche que pour le pre pb fonction fopen ??? [ par spike03 ] Salut,j'ai un pb avec la fonction fopen...je travail sur un serveur apache distant, et je veux créer un fichier txt sur ma machine localealors je fais fonction : execution de fichier sql [ par flagada42 ] function execute_fichier_sql($chemin) { // Ouverture du fichier contenant les requètes SQL $file = fopen($chemin, "r"); //Tant que l'on est pa Fonction crypt() pour htpasswd [ par Houzefa ] salut,voilà ya quelques temps j'avais fait un fichier .htpasswd pour mettre un répertoire protégé sur mon site (serveur Apache normal). le mot de pass Re scan Ftp (fichier journal) [ par ekinoks ] Salut !bon alors voila.... je me suis renseigné commne je pouvé faire pour scanner un ftp et passer a travére des dosier inacesible et... on m'a dit q upload gro fichier [ par MisterJAD ] Bonjour à tous,j'ai besoin d'uploader via php et non via un logiciel ftp, des gros fichiers (max 10mo) sur le serveur.... mais meme lorsque je faitini TIME OUT HELP [ par ekinoks ] alors voila ... ce code ci desu est un indexeur de ftp... le problemme c'est que quant les serveur son un peu gros, la page n'a pas le temps de tout i Problème d'upload de fichier [ par phenixoiseau ] phénixOiseauBonjour,Voilà j'ai écrit un script pour charger un fichier vers un serveur. Lorsque j'execute le script depuis ma machine le chargement du


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,390 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.