begin process at 2012 02 15 08:30:57
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Server Web

 > 

Autre

 > 

copy() et context


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

copy() et context

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ée 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

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,839 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales