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 :

executer un programme cpp via page php avec arguments


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Mai 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2019
    Messages : 29
    Points : 16
    Points
    16
    Par défaut executer un programme cpp via page php avec arguments
    Bonjour, je suis nouveau dans ce monde.

    Je fait tourner un serveur sur ma Raspberry. Ce serveur héberge plusieurs pages PHP avec tout un tas de fonctionnalités.

    J'aimerais pouvoir lancer un exécutable cpp via une de mes pages PHP.
    Il faut savoir que mon exécutable aura un argument à prendre en compte pour pouvoir switcher d'évènements. (exemple en ligne de commande : ./monexecutable arguments1)

    Mon éxécutable fonctionne en ligne de commande, ainsi que mon exécutable avec 1 arguments après. Pour information, mon exécutable est situé au même niveau de la racine que ma page PHP.

    Après plusieurs recherches j'ai vu qu'il fallait utiliser exec() dans ma page PHP. cela ne fonctionne pas.
    J'ai ensuite copier l'éxécutable dans le dossier : /usr/local/bin de ma raspberry. Toujours le même problème.

    Que faire ? avez vous des idées ? Merci d'avance.

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Bonjour, on peux voir le code que tu as écrit ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Mai 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2019
    Messages : 29
    Points : 16
    Points
    16
    Par défaut code
    voici le code qui est censé ouvrir l'executable cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?php
    exec ('i2CLED2 produit1');
     
    ?>
    voici le code en cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    #include <stdio.h>
    #include <wiringPi.h>
    #include <mcp23017.h>
    #include <string>
    #include <iostream>
    #include <stdlib.h>
    #include <string.h>
     
    int main(int argc, char * const argv[])
    {
      int GPB0M1, GPB1M1; // GPB2M1, GPB3M1, GPB4M1;
      wiringPiSetup();
      mcp23017Setup (120, 0x20) ;
     
        pinMode (120, OUTPUT); //PIN GPA0-M1 mode sortie
        pinMode (121, OUTPUT); //PIN GPA1-M1 mode sortie
        pinMode (122, OUTPUT); //PIN GPA2-M1 mode sortie
        pinMode (123, OUTPUT); //PIN GPA3-M1 mode sortie
        pinMode (124, OUTPUT); //PIN GPA4-M1 mode sortie
     
        digitalWrite(120, 0); //PIN GPA0-M1 eteint
        digitalWrite(121, 0); //PIN GPA1-M1 eteint
        digitalWrite(122, 0); //PIN GPA2-M1 eteint
        digitalWrite(123, 0); //PIN GPA3-M1 eteint
        digitalWrite(124, 0); //PIN GPA4-M1 eteint
     
        pinMode (127, INPUT);  //PIN GPB0-M1 mode entrée
        pinMode (128, INPUT);  //PIN GPB1-M1 mode entrée
     
        digitalWrite(120, 0);
        delay(200);
     
     
      if (strcmp(argv[1], "produit1") == 0)
      {
        GPB0M1 = 0;
        digitalWrite(120, 1); //PIN GPA0-M1 allumée
        GPB0M1 = digitalRead(127); 
        while(GPB0M1==0){GPB0M1 = digitalRead(127);} //tant que GPB0M1 n'est pas à 1 je lit la valeur de GPB0M1 SINON ligne suivante
        digitalWrite(120, 0); //PIN GPA0-M1 eteint
      }
     
      else if (strcmp(argv[1], "produit2") == 0)
      {
        GPB1M1 = 0;
        digitalWrite(121, 1);
        GPB1M1 = digitalRead(128);
        while(GPB1M1==0){GPB1M1 = digitalRead(128);}
        digitalWrite(121, 0);
      }
     
     
        getchar();
        return EXIT_SUCCESS;
     
    }
    Pour rappel ce code fonctionne en ligne de commande par exemple : ./i2CLED2 produit1
    J'ai placé l'executable dans le dossier /usr/local/bin pourtant.

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Et ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    <?php
    exec ('/usr/local/bin/i2CLED2 produit1');
     
    ?>

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Mai 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2019
    Messages : 29
    Points : 16
    Points
    16
    Par défaut négatif
    malheureusement non ...
    Avant de poster ce message j'ai fait plusieurs recherche ainsi que plusieurs test.. pour informations avec un executable python il y a juste à mettre le fichier programme.py dans /usr/local/bin
    Puis dans le php mettre : exec( 'programme.py' ); .. d'ou mon incompréhension

  6. #6
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Oui, mais dans Python, il y a le shebang qui dit où trouver l'éxécutable python

    Du coup j’essaierais ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    <?php
    exec ('/usr/local/bin/./i2CLED2 produit1');
     
    ?>
    Sinon un peu tordu mettre la commande dans un fichier bash avec shebang bash

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Mai 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2019
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    toujours pas ...

    Je n'ai pas compris votre idée "un peu tordu"

  8. #8
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Créer un fichier bash test.sh

    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #!/bin/sh
     
    /usr/bin/local/./i2CLED2 produit1

    <?php
    exec ('./test.sh');

    ?>

    C'est a cause du fichier python, que je me dis pourquoi pas.
    Au fait votre fichier i2CLED2 a bien les droits pour être exécuté par www-data ?

  9. #9
    Membre à l'essai
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Mai 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2019
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    Alors j'ai essayer avec votre code qui selon moi contenait une erreur dans le chemin. problème ni avec votre code ni avec celui corriger ça ne fonctionne.

    Pour les droit en faisant clique droit je vois que le fichier peut-être exécuté par "tout le monde"

Discussions similaires

  1. executer une page php avec un ip comme proxy
    Par owenho dans le forum Langage
    Réponses: 2
    Dernier message: 11/02/2019, 17h35
  2. Ouvrir une page php avec arguments
    Par gcgcgc dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 09/06/2010, 16h30
  3. Réponses: 3
    Dernier message: 14/12/2006, 11h46
  4. Réponses: 1
    Dernier message: 30/10/2005, 09h19
  5. Insertion d'1 petit texte ciblé sur page .php avec echo
    Par sabine2000 dans le forum Langage
    Réponses: 1
    Dernier message: 21/10/2005, 11h31

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