problème d'accès fichier sur un disque externe php+ftp

Eléphanteau du PHP | 16 Messages

16 juin 2006, 21:40

bonjour,

voici un petit problème qui me tarabusque... je suis surement à côté de mes pompes, mais bon. J'ai un serveur Apache et je cherche à localiser un fichier qui se trouve sur mon disque externe en faisant un file_exists();

par ex:
<?php 
$fp = "/VOLUMES/DONNEES/fichier.swf";
if(file_exists($fp)){
$file = fopen($fp, 'r');
}else{echo "existe pas";}

?>
Jusque là pas de souci... il me dit bien qu'il existe et je peux même l'afficher avec un fread(). Le problème arrive maintenant:

Je cherche à l'envoyer sur un serveur distant de cette manière:
<?php 

///////////////////////////////////////// connexion au serveur distant //////////////////////////////

$ftp_server =  "mon_serveur";
$conn_id = ftp_connect($ftp_server);
$ftp_user_name="user";
$ftp_user_pass="mdp";
  
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
ftp_pasv($conn_id, true);

// Vérification de la connexion
if ((!$conn_id) || (!$login_result)) { 
	echo "pos bon";
        exit; 
    } else {
	echo "connecté";
    }

////////////////////////////////////////////// le nb_fput ////////////////////////////////////////////////

$fp = "/VOLUMES/DONNEES/fichier.swf";
if(file_exists($fp)){
$file = fopen($fp, 'r');
}else{echo "existe pas";}

$file_dest ="/web/fichier.swf";
$ret = ftp_nb_fput($conn_id, $file_dest, $file, FTP_BINARY);
while ($ret == FTP_MOREDATA) {

   $ret = ftp_nb_continue ($conn_id);

}
if ($ret != FTP_FINISHED) {
   echo "&res=plantage";
   exit(1);
}else{echo "&res=déposage";}

///////////////////////////////////////////////////////////////////////////////////////////////

?>
et la rin de rin... il ne veut pas me l'envoyer... Personne ne saurait me dire pourquoi par hasard? Est-ce parceque le fichier n'est pas au sein du serveur? Mais dans ce cas pourquoi puis-je le lire et afficher son contenu dans mon browser?
Voila, Merci d'avance à ceux qui seront déjà arrivé au bout de ce post ;%

Eléphanteau du PHP | 16 Messages

17 juin 2006, 12:16

Quelques explications en plus... Pour commencer je suis sur Mac Tigre, mon fichier php se trouve sur mon serveur Apache local, je veux lui dire d'envoyer un fichier placé sur mon DD externe à mon serveur distant. Les seuls fichiers que mon script ftp accepte d'envoyer sont ceux qui sont dans mon disque dur principal, le disque sur lequel tourne Apache, je peux remonter jusqu'à "/" mais après impossible d'aller vers /VOLUMES/...

Eléphanteau du PHP | 16 Messages

17 juin 2006, 14:32

Bon finallement je tente avec shell_exec()...

ce qui donne ceci grosso-modo ceci:
echo shell_exec(' ftp -n www.mon serveur.com <<eof
user login pass
binary
put /VOLUMES/DONNEES/fichier.swf /web/swf/fichier.swf
bye
close
eof ');
Alors, voui ça marche mais par contre je n'ai plus la possibilité de vérifier ce qui se passe durant l'upload comme avec ftp_nb_fput qui est asynchrone... Est-ce que quelqu'un saurait me dire si il est possible de suivre l'upload lancé par un schell_exec()? Ou alors dois-je poster sur forum unix? :cry: