Partage
  • Partager sur Facebook
  • Partager sur Twitter

Utilisation de variable PHP dans un script Shell

Sujet résolu
    26 avril 2013 à 19:37:10

    Bonjour,

    J'ai un fomulaire.php, qui envoi ses donneés dans traitement.php

    Dans traitement.php il a :

    $nom = $_POST['nom'];
    $pass = $_POST['pass'];
    exec('sh /etc/scripts/script.sh');

    qui exécute script.sh, ou se trouve les variables qui doivent être écrites :

    channel_name=$nom channel_password=$pass

    Mais les variables ne sont pas transmises au script.sh, je ne sais pas comment faire pour utiliser les variables PHP dans un script Shell.

    Vous avez une idée ?

    Merci d'avance !

    • Partager sur Facebook
    • Partager sur Twitter

    Il y a 10 catégories de personnes : celles qui savent compter en binaire et celles qui ne savent pas.

      26 avril 2013 à 23:04:35

      Salut tu as 3 solutions.

      La première solution c'est de transformer t'es variable php en variable global. C'est une solution très moche donc je te ne la décrirais pas.

      La 2e solution c'est de communiquer avec ton script pour IPC, avec un pipe par exemple. C'est un peu lourd pour deux variables.

      La dernière c'est tout simplement de passer tes variables au script en les passants comme argument.

      -
      Edité par millman 26 avril 2013 à 23:05:05

      • Partager sur Facebook
      • Partager sur Twitter
        27 avril 2013 à 1:35:23

        La 3iem solutions ressemble à quelque chose comme ca ? :

        exec('sh /etc/scripts/script.sh' .$nom '' .$pass);



        • Partager sur Facebook
        • Partager sur Twitter

        Il y a 10 catégories de personnes : celles qui savent compter en binaire et celles qui ne savent pas.

          27 avril 2013 à 12:20:40

          Bonjour.

          millman a écrit:

          La première solution c'est de transformer t'es variable php en variable global.


          Par variables globales tu parles des globales en PHP ou bien des variables environnement shell settées avec export ? Seule la seconde solution est faisable (si l'utilisation de la variable d'environnement se fait dans le même appel à bash) :

          ThinkPad-T420 ~ $ cat test.php 
          #!/usr/bin/php
          <?php
              exec ("export TEST=test; env|grep TEST > f1.txt");
              exec ("env|grep TEST > f2.txt");
              $GLOBALS['TEST2']="test2";
              exec ("echo \$TEST2 >f3.txt");
          ?>
          ThinkPad-T420 ~ $ ./test.php 
          ThinkPad-T420 ~ $ cat f1.txt 
          TEST=test
          ThinkPad-T420 ~ $ cat f2.txt 
          ThinkPad-T420 ~ $ cat f3.txt 
          
          ThinkPad-T420 ~ $ 
          
          

          Sinon oui le passage d'arguments au script reste une solution préférable. D'autres solutions sont possibles comme la création de fichiers de conf structurés (clef/valeur, json, xml, etc) ré-utilisé par le script.

          Alexdu98> Oui à peu près (il manque des espaces entre chaque paramètres de ta ligne de commande)

          ok

          • Partager sur Facebook
          • Partager sur Twitter
            27 avril 2013 à 19:40:46

            exec('sh /etc/scripts/tschang.sh ' . $nom '' . $pass);
            Comme ca ?
            • Partager sur Facebook
            • Partager sur Twitter

            Il y a 10 catégories de personnes : celles qui savent compter en binaire et celles qui ne savent pas.

              28 avril 2013 à 12:46:23

              pourquoi ne pas y metre dans un fichier que ton script tschang.sh utilisera ?
              • Partager sur Facebook
              • Partager sur Twitter
                28 avril 2013 à 14:07:26

                Je ne sais pas faire ^^'
                • Partager sur Facebook
                • Partager sur Twitter

                Il y a 10 catégories de personnes : celles qui savent compter en binaire et celles qui ne savent pas.

                  28 avril 2013 à 14:23:09

                  Alexdu98 a écrit:

                  exec('sh /etc/scripts/tschang.sh ' . $nom '' . $pass);

                  Comme ca ?

                  Ça a l'air correct, au pire teste et tu verra si ça marche.

                  Met les arguments entre guillemets pour éviter les problèmes avec les espaces.

                  Je suis d'accord avec ok, le passage en argument pour passer des chaines de caractères courtes à un script est la meilleure solution.

                  L'utilisation d'un fichier ou d'autres techniques comme une base de données ou les sockets serait adaptée pour des données plus volumineuses ou tout ce qui n'est pas des caractères.

                  -
                  Edité par LoupSolitaire 28 avril 2013 à 14:25:53

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Blond, bouclé, toujours le sourire aux lèvres...

                    28 avril 2013 à 14:27:57

                    Il manque un espace entre les guillemets entre $name et $pass.
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Koinko.in, le raccourcisseur d'URL qu'il est bien - Zingwai vaincra.
                      28 avril 2013 à 17:18:33

                      Ca ne marche pas cette ligne :/
                      • Partager sur Facebook
                      • Partager sur Twitter

                      Il y a 10 catégories de personnes : celles qui savent compter en binaire et celles qui ne savent pas.

                        28 avril 2013 à 17:24:55

                        Dommage.

                        Sinon les gens censés postent les messages d'erreurs obtenus ou les raisons pour lesquelles "sa march pa". Après tu fais comme tu veux.

                        • Partager sur Facebook
                        • Partager sur Twitter

                        Blond, bouclé, toujours le sourire aux lèvres...

                          28 avril 2013 à 17:35:38

                          Jsais pas comment on fait ca moi..

                          Je sais juste que le script est bien exec avec ca :

                          exec("sh /etc/scripts/tschang.sh $nom $pass");


                          comme ils le disent ici : http://forum.phpfrance.com/gestion-serveur/fonction-exec-arguments-t253550.html

                          Mais que c'est la variable qui n'est pas envoyer

                          • Partager sur Facebook
                          • Partager sur Twitter

                          Il y a 10 catégories de personnes : celles qui savent compter en binaire et celles qui ne savent pas.

                            28 avril 2013 à 18:07:01

                            Ça n'envoie pas la variable, ça envoie son contenu comme argument au script, dans le script il faut récupérer les arguments de la ligne de commande ($1, $2, etc...).

                            • Partager sur Facebook
                            • Partager sur Twitter

                            Blond, bouclé, toujours le sourire aux lèvres...

                              28 avril 2013 à 18:11:53

                              Et comment on fait ca dans le script shell ?
                              • Partager sur Facebook
                              • Partager sur Twitter

                              Il y a 10 catégories de personnes : celles qui savent compter en binaire et celles qui ne savent pas.

                                28 avril 2013 à 18:15:11

                                Ah sa marche !!!

                                Merci beaucoup !

                                (Au lieu de mettre $nom et $pass dans le script shell fallait mettre $1 et $2) !

                                • Partager sur Facebook
                                • Partager sur Twitter

                                Il y a 10 catégories de personnes : celles qui savent compter en binaire et celles qui ne savent pas.

                                  17 avril 2015 à 12:15:06

                                  bonjour a vous tous il est vrai que je ne suis pas sur la page adeqouate mais j essaye de poser mon probleme je suis entrain de coder en c je veux transmettre une variable declarer dans mon main que je veux transmettre a un script shell exemple : int temp; temp = 45; system(echo'temp'); mais cela ne fonctionne pas
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  ferry francois bakongo
                                    19 avril 2015 à 14:17:30

                                    Tu pourrais essayer d’appeler ton script shell avec en parametre la valeur de ta variable, ou faire une variable d'environnement.
                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    Il y a 10 catégories de personnes : celles qui savent compter en binaire et celles qui ne savent pas.

                                    Utilisation de variable PHP dans un script Shell

                                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                    • Editeur
                                    • Markdown