Commande shell

Répondre
Andras
le 16/02/2009 à 11:49
Andras
Salut a tous

voila j'ai un probléme bizard.
Je travail sous debian et je doit dezipper automatiquement fichier.
pour ca généralement j'utilise la commande unzip. J'ai donc ecrit la ligne de code suivante :

<?php exec('unzip /var/www/dev-ant/tmp/test.zip'); ?>


quand je tape cete commande directement ca marche mais quand je le fait avec mon programme y se passe rien ,ni message d'erreur, ni plantage et le fichier n'a pas été dézipper .

Quelqu'un comprend d'ou ca vien ?
LA GLOBULE
le 16/02/2009 à 12:05
LA GLOBULE
Je te suggère d'utiliser les deux paramètres optionnels de exec afin de récupérer les lignes retournées par la commande et aussi le code de retour de la commande.

Sinon, je pense que PHP ne trouve tout simplement par le chemin du binaire unzip. Tu devrais le spécifier en dur.
Andras
le 17/02/2009 à 08:18
Andras
voila ce que j'ai fait :

<?php $test=exec('unzip /var/www/dev-ant/tmp/test.zip',$op);

?>


$test ya rien dedans et $op qui est un taleau si j'ai bien compris j'ai test de -1 a 8 et ya rien dedans non plus
LA GLOBULE
le 17/02/2009 à 08:36
LA GLOBULE
Et en utilisant le troisième paramètre optionnel ? (c'est le plus important en fait).

Et un print_r de $op donne quoi ?
Andras
le 17/02/2009 à 10:15
Andras
voila ce que j'ai fait :


<?php exec('unzip /var/www/dev-ant/tmp/test.zip',$op,$test);
print_r($op);
echo ($test);

?>


print_r de $op donne Array()
et le echo de $test me donne 127
LA GLOBULE
le 17/02/2009 à 10:39
LA GLOBULE
Juste array ? T'es sur de ne pas avoir fait un echo de $op plutot ? Normalement, print_r te permet justement de voir la structure du tableau.

En tout cas, le code de retour de retourne pas 0 (ce qui indique qu'il y a une erreur shell).
L'erreur 127 veut dire que le binaire unzip n'a pas été trouvé, ce qui rejoint ma première remarque : indique le chemin absolu de unzip.
Andras
le 17/02/2009 à 10:44
Andras
non non j'ai bien fait un print_r .Par contre le chemin absolu je sais pas ce que c'est desolé ?
LA GLOBULE
le 17/02/2009 à 10:47
LA GLOBULE
Ben genre :

<?php
exec('/usr/bin/unzip blu.zip');
?>


A toi de trouver ou se trouve ton unzip, tu peux le faire grace à un whereis.
Andras
le 17/02/2009 à 10:58
Andras
Alors j'ai fais un var_dump de $op ca me donne array(0).

J'ai fais whereis unzip ca ma donner deux chemin :/usr/bin/unzip et /usr/share/man/man1/unzip.1.gz
j'ai donc modifie ma commande :

exec('usr/bin/unzip /var/www/dev-ant/tmp/test.zip',$op,$test);
print_r($op);
var_dump ($op);
echo ($test);

<?php ?>


et ca ne marche pas voila ce que ca affiche: Array ( ) array(0) { } 127.
Répondre
LoadingChargement en cours