Commande shell
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 ?
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.
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
Et en utilisant le troisième paramètre optionnel ? (c'est le plus important en fait).
Et un print_r de $op donne quoi ?
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
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.
non non j'ai bien fait un print_r .Par contre le chemin absolu je sais pas ce que c'est desolé ?
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.
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);
et ca ne marche pas voila ce que ca affiche: Array ( ) array(0) { } 127.
je remets les choses a leur places
<?php
exec('usr/bin/unzip /var/www/dev-ant/tmp/test.zip',$op,$test);
print_r($op);
var_dump ($op);
echo ($test);
?>