Page 1 sur 1

Problème avec exec, system, shell-exec

Posté : 24 juin 2008, 10:17
par DoDo
Bonjour,

j'ai une page PHP qui doit appeler un script shell sur mon serveur linux, cependant lorsque j'appel le script avec les commandes exec, system ou shell-exec il ne se lance pas.

Pourtant, j'ai modifié dans le fichier php.ini la commande safe_mode = on et et j'ai aussi régler le safe_mode_exec_dir ...

Est-ce qu'il est possible que j'ai oublié un réglage?

Je précise que mon script shell fonctionne parfaitement si je l'appel en ligne de commande.

Je vous remercie d'avance pour vos réponse!

Posté : 24 juin 2008, 11:54
par zigz4g
Un petit bout de ton code aurait ete bien pratique. Sans savoir ce que tu fais,
verifie les valeurs de retour des fonctions exec, system, etc...
Verifie aussi que tu a les droits d'execution sur ton script shell pour l'utilisateur du serveur
Apache (je suppose sous Linux mais pas sur).

Posté : 24 juin 2008, 13:13
par DoDo
Alors voici un bout de mon code (même si celà ne sert a rien car il n'y a pas plus):
- exec('sh script.sh');

Le code de retour est 127, est-ce qu'il y a un endroit ou on peut voir à quoi il correspond, car je n'est pas réussi à trouver ...

Les droits d'exécution sont bon :s

Merci quand pour votre aide ...

Posté : 24 juin 2008, 13:47
par zigz4g
http://fr2.php.net/manual/fr/function.exec.php
Perso, je pense que ton script est trop court même si cela parrait suffisant.
Voici le minimun que je ferais :
<?php
if (($ret = exec('/bin/sh /home/perso/monscript.sh')) == '0') {
    echo 'Tout ce passe bien.';
}
else {
    echo 'Il y a une erreur (code ' . $ret . ')';
}
?>
Je ferais la vérification de la valeur de retour pour savoir quand il y a un problème et permet de faire
des logs.

Pour ton code de retour (127), ce doit être le code retour de ta dernière instruction si il arrive a
trouver le script. Pour le shell 'sh', php doit le trouver grace au PATH mais pour ton script, je n'en
suis pas sur.