Forum Programmation.php exec un script avec un fichier de paramètre

Posté par  .
Étiquettes : aucune
0
6
fév.
2006
Bonjour a tous,
je n'arrive pas a executer un script shell avec un fichier passer en paramètre sous php. Voila mon code:
$script = /home/scripts/restauration.sh
$temp = /tmp/tempoQh4zI

$com = "$script $temp";
echo "$com";
$command = escapeshellcmd ("$com");
echo "$command";
$fini = exec ($command);

j'ai un peu tout essayé
$fini = exec ("$script $temp")
avec ou sans escapeshellcmd
avec des ", des ',des `, sans rien

bref je suis a court d'idées, je ne vois pas comment faire? (je précise que dans mon terminal, si je lance les valeurs
$script $temp ca fonctionne )

merci pour vos réponses
  • # et la doc te dis quoi ?

    Posté par  (site web personnel) . Évalué à 2.

    le site officiel de PHP qui a une traduction officielle de la doc de PHP en francais, te dit :
    http://fr2.php.net/manual/fr/function.exec.php

    sinon, il me semble que tu cherches quelque chose de plus proche de system dont la doc est http://fr2.php.net/manual/fr/function.system.php

    les infos générales sur le sujet sont : http://fr2.php.net/manual/fr/ref.exec.php
  • # shellexec

    Posté par  . Évalué à 1.

    Perso, j'utilise la commande shellexec pour executer des scripts shell

    shell_exec -- Exécute une commande via le Shell et retourne le résultat sous forme de chaîne

    $com="$script $temp";
    $result=shell_exec($com);
    echo $result;

    ça devrait fonctionner
    • [^] # Re: shellexec

      Posté par  (site web personnel) . Évalué à 1.

      Dans le même ordre, je crois que tu peux utiliser les backquotes comme en shell:
      $resultat = `ma_commande_bash avec ses arguments`
  • # Ya des trucs qui clochent

    Posté par  . Évalué à 1.

    J'ai du mal a croire que déjà a ce niveau la ça marche :

    $script = /home/scripts/restauration.sh

    $temp = /tmp/tempoQh4zI

    il manque des " et des ; ça c'est sure.

    Le programme PHP se lance sans erreur ? quel sont les retours de exec ?

    En gros qu'est ce qui se passe quand tu lance effectivements ton script php qu'as tu à l'écran ?
    • [^] # Re: Ya des trucs qui clochent

      Posté par  . Évalué à 0.

      rebonjour,
      pour ce qui est des shell_exec, exec, system , passthru j'ai déja tout essayé ca ne lance rien, ca ne fait pas de message d'erreur, et ca me renvoi meme le code 0 pour dire que ca a fonctionné....

      le script exact:
      $script = "/home/scripts/restauration.sh";
      $temp = "/tmp/tempoQh4zI";
      $com = "$script $temp";
      echo "$com";
      $fini = shell_exec ("$com");
      echo $fini;

      le echo "$com"; affiche /home/scripts/restauration.sh /tmp/tempoQh4zI

      mais ce ne fonctionne pas, pourtant si je lance
      /home/scripts/restauration.sh /tmp/tempoQh4zI dans mon terminal ca focntionne...??
      comprend pas...
      • [^] # Re: Ya des trucs qui clochent

        Posté par  . Évalué à 1.

        Ton prog shell renvoie-t-i une sortie.
        Si oui, pour tester, détourne la pour voir si tout ce pas bien pendant que l'exec de php tourne
        par exemple :
        $com = "$script $temp 2>/tmp/error.out 1>/tmp/log.out";
        $fini = shell_exec ("$com");
        • [^] # Re: Ya des trucs qui clochent

          Posté par  . Évalué à 1.

          Question bête:

          www-data a-t-il: les droits d'exécutions sur le programme que tu essais de lancer ?

          C'est peut être une raison.

          Quand tu le lances a la main tout se passe bien car tu es l'utilisateur qui a le droit d'exécuter le programme restauration.sh

          Par contre quand c'est le php qui essai de le faire c'est l'utilisateur qui lance le php qui tente de le faire (généralement www-data) et donc lui aussi doit avoir les droits d'exécution dessus.
        • [^] # Re: Ya des trucs qui clochent

          Posté par  . Évalué à 0.

          j'ai fait comme tu as mis mais il n'y a rien dans les fichiers /tmp/error.out /tmp/log.out , la commande ne se lance donc pas... et je ne sais pas pourquoi?? le chemin vers le script est pourtant bon...

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.