Portail PHP

Forum de discussion et d'aide au php

Vous n'êtes pas identifié.

Annonce

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.
 

#1 10-04-2008 04:21:36

johnkro
Membre
Date d'inscription: 09-04-2008
Messages: 12

Erreur avec la fonction exec()

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

 

#2 10-04-2008 09:40:53

Asherah
Membre
Date d'inscription: 15-11-2007
Messages: 161
Site web

Re: Erreur avec la fonction exec()

Apparament il ne trouve pas le chemin, assure toi d'avoir le bon chemin.

ca devrait ressembler a un truc comme ça:

Code:

$command = "c:\dossier\executable.exe \\127.0.0.1 -u username -p password 
exec($command);

Hors ligne

 

#3 10-04-2008 09:49:42

johnkro
Membre
Date d'inscription: 09-04-2008
Messages: 12

Re: Erreur avec la fonction exec()

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 hmm

Hors ligne

 

#4 11-04-2008 03:16:21

johnkro
Membre
Date d'inscription: 09-04-2008
Messages: 12

Re: Erreur avec la fonction exec()

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

 

#5 11-04-2008 10:39:52

johnkro
Membre
Date d'inscription: 09-04-2008
Messages: 12

Re: Erreur avec la fonction exec()

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

 

#6 11-04-2008 11:40:14

Philippe Gamache
Administrateur
Date d'inscription: 17-08-2006
Messages: 136

Re: Erreur avec la fonction exec()

Est ce que ton Apache est en prison "jail"???

Hors ligne

 

#7 14-04-2008 03:07:49

johnkro
Membre
Date d'inscription: 09-04-2008
Messages: 12

Re: Erreur avec la fonction exec()

Euh je ne sais pas, comment le savoir?

Hors ligne

 

#8 14-04-2008 08:21:42

johnkro
Membre
Date d'inscription: 09-04-2008
Messages: 12

Re: Erreur avec la fonction exec()

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

 

#9 14-04-2008 08:47:42

Alkann
Membre
Lieu: Paris
Date d'inscription: 02-03-2008
Messages: 28
Site web

Re: Erreur avec la fonction exec()

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

 

#10 14-04-2008 08:53:28

johnkro
Membre
Date d'inscription: 09-04-2008
Messages: 12

Re: Erreur avec la fonction exec()

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

 

#11 14-04-2008 09:44:50

Alkann
Membre
Lieu: Paris
Date d'inscription: 02-03-2008
Messages: 28
Site web

Re: Erreur avec la fonction exec()

As-tu essayé de faire cela :
<?php
exec ('cvs update /home/www/cvs/test_cvs', $output);
var_dump($output);
?>

Et voir ce que tu retournes la variable $output smile

Hors ligne

 

#12 14-04-2008 09:51:50

johnkro
Membre
Date d'inscription: 09-04-2008
Messages: 12

Re: Erreur avec la fonction exec()

ç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

 

#13 14-04-2008 11:10:38

Alkann
Membre
Lieu: Paris
Date d'inscription: 02-03-2008
Messages: 28
Site web

Re: Erreur avec la fonction exec()

As tu essayer par la commande passthru pour voir directement le résultat de ta commande ?
Tes erreurs sont-elles affichés dans les logs ?

Hors ligne

 

#14 14-04-2008 12:09:56

johnkro
Membre
Date d'inscription: 09-04-2008
Messages: 12

Re: Erreur avec la fonction exec()

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

 

#15 14-04-2008 13:58:34

Philippe Gamache
Administrateur
Date d'inscription: 17-08-2006
Messages: 136

Re: Erreur avec la fonction exec()

Tu appels ta commande avec le path complet?

Hors ligne