Forum de discussion et d'aide au php
Vous n'êtes pas identifié.
|
Regles d'utilisation des forums : pensez à toujours les respecter si vous désirez obtenir des réponses rapides. FAQ : pensez à toujours chercher dedans si la réponse à votre question est dedans. Proposez vos news : si vous avez un evenement à annoncer le chat : venez discuter de php. |
||
Bonjour tout le monde,
j'ai un problème tout bête, j'ai fait quelques recherches sur le forum mais je ne trouve pas de réponse simple : je n'arrive pas à utiliser la fonction exec() ...
Avec ce code :
<?php
echo exec("ls");
//shell_exec('ls');
?>
J'ai l'erreur suivante :
[www@wqis ~/cvs]$ php test.php
sh: /usr/local/php/bin/ls: No such file or directory
Merci d'avance
Hors ligne
Apparament il ne trouve pas le chemin, assure toi d'avoir le bon chemin.
ca devrait ressembler a un truc comme ça:
$command = "c:\dossier\executable.exe \\127.0.0.1 -u username -p password exec($command);
Hors ligne
Nan nan ça vient pas du chemin. Je suis sous Linux, j'ai fait un which, j'ai donc indiqué le bon chemin.
Je pense que ça vient du safe mode, mais je n'ai pas les droits suffisants, je vais donc contacter l'administrateur, qui n'est pas la jusque lundi ![]()
Hors ligne
Ca marche! Mon code :
exec('ls',$tab);
$length=count($tab);
for ($i=0; $i<$length; $i++) {
echo "$tab[$i]\n";
}
me renvoie bien :
[www@wqis ~/cvs]$ php test.php
test
test.php
test222
test_cvs
toto
J'ai donc copié le lien symbolique ls du dossier /bin dans mon safe_mode_exec_dir, c'est bien comme cela qu'il faut faire?
Maintenant je m'attaque aux commandes cvs appelées par la fonction exec...
Hors ligne
J'ai un nouveau problème, toujours avec la fonction exec() !
Je veux effectuer un cvs commit, avec la fonction exec, de cette manière : exec ("cvs commit -m 'msg' /home/www/cvs/test_cvs");
Mais ça ne fait rien...
Ce qui est très bizarre, c'est qu'en CLI, ça marche!
test.php :
<?php
exec ('cvs update /home/www/cvs/test_cvs');
?>
j'exécute donc avec php test.php, qui me donne bien la mise à jour :
[www@wqis ~/test_cvs]$ php test.php
cvs update: Updating /home/www/cvs/test_cvs
cvs update: Updating /home/www/cvs/test_cvs/etc
cvs update: Updating /home/www/cvs/test_cvs/postconfigure
cvs update: Updating /home/www/cvs/test_cvs/root
Du coup j'ai essayé d'exécuter ce test.php depuis mon script principal à l'aide de exec ('php test.php'), mais ça ne fait plus rien, ça viendrait d'Apache?
Hors ligne
Est ce que ton Apache est en prison "jail"???
Hors ligne
Euh je ne sais pas, comment le savoir?
Hors ligne
Personne n'a une idée?
A mon avis, ça vient d'apache, mais je ne sais pas trop ce qu'il faudrait que j'active ou désactive comme option dans le fichier de conf httpd pour que ça marche...
Je résume le problème:
J'arrive à exécuter une commande grâce à la fonction php exec() en ligne de commande : php test.php.
Mais quand je mets cette même fonction dans le code php qui est interprété par Apache pour mon interface graphique, ça ne fait rien.
PS: j'ai bien essayé de faire exec('php test.php') ou même d'exécuter un script depuis le code php interprété par Apache, mais rien n'y fait, ça ne marche pas...
Merci d'avance
Hors ligne
Plus d'infos sur le jail (dont parle Philippe Gamache) : http://worldserver3.oleane.com/bouynot/ … index.html
Lorsque tu exécutes la commande php test.php sous quel utilisateur es tu ?
C'est sans doute un problème d'utilisateur qui exécute ton script.
Hors ligne
D'après ta doc, je doute que mon apache utilise de système de jail...
Lorsque j'exécute la commande php test.php, je suis en utilisateur www, le même que celui qu'utilise Apache normalement...
Hors ligne
ça me donne ça en CLI :
[www@wqismp01s ~/cvs]$ php test_commit.php
cvs update: Updating /home/www/cvs/test_cvs
cvs update: Updating /home/www/cvs/test_cvs/etc
cvs update: Updating /home/www/cvs/test_cvs/postconfigure
cvs update: Updating /home/www/cvs/test_cvs/root
array(0) {
}
et ça : array(0) { } dans mon interface graphique...
Hors ligne
Oulah j'ai trouvé le fichier de log, c'était pratiquement pas possible de le trouver seul...
Enfin l'erreur est la suite :
sh: cvs: command not found
Pourquoi cette erreur, alors que j'ai bien mis le lien de la commande cvs dans le safe_mode_exec_dir???
Pour rappel, cette commande bien dans du code php que j'exécute en ligne de commande...
Dernière modification par johnkro (14-04-2008 12:10:39)
Hors ligne
Tu appels ta commande avec le path complet?
Hors ligne