IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

PHP pour passer des commandes en Bash


Sujet :

Langage PHP

  1. #1
    Membre chevronné
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2014
    Messages
    392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Arménie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2014
    Messages : 392
    Par défaut PHP pour passer des commandes en Bash
    Bonsoir,

    Je programme assez peu en PHP... Je sollicite un conseil de votre part.

    Une carte Arduino, reliée à un PC sous Linux via un câble USB, se contrôle avec des commandes en Bash. Souhaitant contrôler la carte Arduino depuis un site web, je pense au PHP pour passer les commandes en Bash. J'ai été surpris de constater qu'il y a au moins trois solutions, exec(), system() ou shell_exec().

    Quelle solution vous semble la meilleure?

    J'ai fait le premier test ci-dessous pour me faire une idée.

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <html>
    <?php
    echo '*';
    echo exec('whoami');
    echo '*<br>*';
    echo shell_exec('whoami');
    echo '*<br>*';
    echo system('whoami');
    echo '*<br>*';
    system('whoami');
    echo '*';
    ?>
    </html>

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 565
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 565
    Par défaut
    regardez la documentation et vous verrez les différences suivant que vous souhaitez par exemple récupérer le résultat de la commande
    https://php.net/function.exec
    https://php.net/system
    https://php.net/shell_exec

  3. #3
    Membre chevronné
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2014
    Messages
    392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Arménie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2014
    Messages : 392
    Par défaut
    Bonjour,

    Merci pour votre réponse et pour ces liens. Ces commandes sont assez anciennes, puisque compatibles avec PHP4.

    Y a-t-il une nuance entre "Exécute une commande via le Shell" et "Exécute un programme externe", ou est-ce la même chose?

    Je connaissais le site http://php.net/manual/fr/. Il est remplacé par le site https://secure.php.net/?

  4. #4
    Membre chevronné
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2014
    Messages
    392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Arménie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2014
    Messages : 392
    Par défaut
    Rebonjour,

    Et je découvre à l'instant qu'on peut passer des commandes de ce type avec des guillemets obliques...

    http://php.net/manual/fr/language.op....execution.php

  5. #5
    Membre chevronné
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2014
    Messages
    392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Arménie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2014
    Messages : 392
    Par défaut
    Bonjour,

    Une solution ou une autre, du moment qu'elle fonctionne... Je mets donc "résolu" à cette discussion.

    Enfin tout de même, pour l'instant et contrairement aux informations données dans la documentation officielle, la différence que je constate entre exec() et shell_exec()... est le retour à la ligne, inutile à mon avis. La fonction system() affiche le résultat, ce qui n'est pas forcément souhaitable.

    J'opte donc pour la fonction exec().

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 12
    Dernier message: 08/02/2015, 23h08
  2. Méthode pour traiter des commandes
    Par Kr00pS dans le forum C
    Réponses: 17
    Dernier message: 15/06/2006, 17h58
  3. Réponses: 6
    Dernier message: 21/12/2005, 18h52
  4. Réponses: 2
    Dernier message: 04/10/2005, 20h54
  5. Réponses: 3
    Dernier message: 02/09/2002, 18h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo