Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 28/01/2014, à 14:38

Alex213

mv et php

Bonjour

décidément les commandes unix dans php me donnent du file à retordre sad

j'essaye de déplacer un fichier en faisant :
$cmd = 'mv -n "/var/www/dev_2013/TEST_api_mail/Server_api_mail/temp/'.$file_name1.'" "/var/www/dev_2013/TEST_api_mail/Server_client/4_file_sent/'.$file_name1.'"';
    exec($cmd, $output, $return_val);

if ($return_val == 0) {
   echo "success";
} else {
   echo "failed";
}
et ça me retourne failed !

je suis quasi sûre que c'est une erreur de syntaxe mais je ne la voit pas si vous pouvez m'aider merci.

Hors ligne

#2 Le 28/01/2014, à 14:50

jplemoine

Re : mv et php

il faudrait que tu imprimes le contenu de la variable $cmd juste avant le exec...


Ce compte ne servira plus : vous pouvez le supprimer si le coeur vous en dit...
Laissé par l'auteur pour historique.

Hors ligne

#3 Le 28/01/2014, à 14:51

Alex213

Re : mv et php

c'est à dire ?
avec un echo ?

Hors ligne

#4 Le 28/01/2014, à 14:53

jplemoine

Re : mv et php

oui. un truc du genre echo ou print, je ne m'en rappelle jamais.


Ce compte ne servira plus : vous pouvez le supprimer si le coeur vous en dit...
Laissé par l'auteur pour historique.

Hors ligne

#5 Le 28/01/2014, à 14:57

Alex213

Re : mv et php

print et echo testé et cela ne change rien sad

Hors ligne

#6 Le 28/01/2014, à 14:58

Alex213

Re : mv et php

avec :
$cmd = 'mv -n "/var/www/dev_2013/TEST_api_mail/Server_api_mail/temp/'.$file_name1.'" "/var/www/dev_2013/TEST_api_mail/Server_client/4_file_sent/'.$file_name1.'"';
    print '$cmd :'.$cmd.'<br>';
    exec($cmd, $output, $return_val);

if ($return_val == 0) {
   echo "success";
} else {
   echo "failed";
}

ou

$cmd = 'mv -n "/var/www/dev_2013/TEST_api_mail/Server_api_mail/temp/'.$file_name1.'" "/var/www/dev_2013/TEST_api_mail/Server_client/4_file_sent/'.$file_name1.'"';
    echo '$cmd :'.$cmd.'<br>';
    exec($cmd, $output, $return_val);

if ($return_val == 0) {
   echo "success";
} else {
   echo "failed";
}

Hors ligne

#7 Le 28/01/2014, à 15:11

jplemoine

Re : mv et php

Le but est que tu postes le contenu de la variable pour voir ce que ça donne --> je n'arrive pas à analyser ton listing.


Ce compte ne servira plus : vous pouvez le supprimer si le coeur vous en dit...
Laissé par l'auteur pour historique.

Hors ligne

#8 Le 28/01/2014, à 15:14

Alex213

Re : mv et php

ok
donc le contenu de la variable :
mv -n "/var/www/dev_2013/TEST_api_mail/Server_api_mail/temp/titi.txt" "/var/www/dev_2013/TEST_api_mail/Server_client/4_file_sent/titi.txt"

Hors ligne

#9 Le 28/01/2014, à 15:16

jplemoine

Re : mv et php

Si tu lances la commande dans un terminal, qu'est-ce que ça donne ?
Pourquoi le -n ?


Ce compte ne servira plus : vous pouvez le supprimer si le coeur vous en dit...
Laissé par l'auteur pour historique.

Hors ligne

#10 Le 28/01/2014, à 15:18

Alex213

Re : mv et php

Je n'ai pas à ma dispo de terminal.
Le -n pour ne pas écraser le fichier s'il existe.

Hors ligne

#11 Le 28/01/2014, à 15:24

jplemoine

Re : mv et php

faire un print_r($output); après l'exec qui permettrait de voir le retour de la commande..


Ce compte ne servira plus : vous pouvez le supprimer si le coeur vous en dit...
Laissé par l'auteur pour historique.

Hors ligne

#12 Le 28/01/2014, à 15:26

Alex213

Re : mv et php

voilà le retour de la commande :
Array ( )
un array vide sad

Hors ligne

#13 Le 28/01/2014, à 15:35

jplemoine

Re : mv et php

La commande a l'air bonne. Pour moi, c'est soit un problème de droit ou un répertoire inexistant mais je ne vois pas comment on peut le voir.
Désolé mais je passe la main à quelqu'un qui aurait une bonne idée : là, je sèche.


Ce compte ne servira plus : vous pouvez le supprimer si le coeur vous en dit...
Laissé par l'auteur pour historique.

Hors ligne

#14 Le 28/01/2014, à 15:40

Alex213

Re : mv et php

Tous les répertoires existent.
Pour ce qui est des droits j'y ai pensé aussi mais je ne sais pas non plus comment les voirs.

Hors ligne

#15 Le 28/01/2014, à 15:41

Alex213

Re : mv et php

Mais merci de ton aide quand même smile

Hors ligne

#16 Le 28/01/2014, à 15:48

bruno

Re : mv et php

Pourquoi ne pas simplement utiliser la fonction rename de PHP ?

Si tu tiens absolument à utiliser exec() met le chemin complet de ta commande (le mieux serait me de tester si le fichier existe et s'il est exécutable) :

$cmd = '/bin/mv -n "/var/w… …';

#17 Le 28/01/2014, à 15:48

Alex213

Re : mv et php

Et ce n'est définitivement pas un problème de droit car je passe par une connection SSH avec le user root sad

Hors ligne

#18 Le 28/01/2014, à 15:52

Alex213

Re : mv et php

parce qu'on me demande d'utiliser exec () et mv sad
pour le fichier si c'est du fichier à déplacer que vous parlez oui il existe.
je viens de rajouter le /bin/mv et pareil sad

Hors ligne

#19 Le 28/01/2014, à 15:54

jplemoine

Re : mv et php

Si tu lances la commande du post #8 dans la session ssh (que j'ai appelé terminal précédement ), est-ce que ça fonctionne ? Si ça ne fonctionne pas, quel est le message d'erreur ?


Ce compte ne servira plus : vous pouvez le supprimer si le coeur vous en dit...
Laissé par l'auteur pour historique.

Hors ligne

#20 Le 28/01/2014, à 16:23

bruno

Re : mv et php

Alex213 a écrit :

parce qu'on me demande d'utiliser exec () et mv sad

Ça c'est bien débile, exec n'est utile que si l'on a pas de fonction PHP pour exécuter une opération sur le système.


pour le fichier si c'est du fichier à déplacer que vous parlez oui il existe.

Non je parlais du fichier /bin/mv.

#21 Le 29/01/2014, à 11:13

tiramiseb

Re : mv et php

Salut,

Es-tu sûre que le fichier destination n'existe pas déjà ?


[ton cahier des charges est vraiment moisi en effet... par curiosité, quel est le contexte ? des exercices ? un supérieur très mauvais informaticien ?]

Hors ligne

#22 Le 30/01/2014, à 15:22

Pseudo supprimé

Re : mv et php

parce qu'on me demande d'utiliser exec () et mv

Cela a l'air de fonctionner;
par exemple, renommer /tmp/name.txt en /tmp/name-re.txt,

touch /tmp/name.txt
php -a
Interactive shell

php > $a='/tmp/name.txt';
php > echo "$a";
/tmp/name.txt
php > $b='mv '."$a".' /tmp/name-re.txt';
php > echo "$b";
mv /tmp/name.txt /tmp/name-re.txt
php > exec("$b", $output, $return_val);
php > echo "$return_val";
0

variante avec les backquotes

touch /tmp/name.txt
php -a
Interactive shell

php > $b='`mv /tmp/name.txt /tmp/name-re.txt`';
php > echo "$b";
`mv /tmp/name.txt /tmp/name-re.txt`
php > exec($b, $output, $return_val);
php > echo "$return_val";
0
php > exit