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 :

[Système] Exécuter une commande


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 206
    Par défaut [Système] Exécuter une commande
    Bonjour,

    j'ai une commande qui fonctionne correctement lorsque je l'éxécute en lancant executer/cmd

    Par contre lorsque je l'integre dans un exec dans mon fichier php ca ne marche pas !
    Voici ce que j'execute via cmd :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "C:\Program Files\MySQL\MySQL Server 5.0\bin\mysql.exe" -hlocalhost -uroot -pmonpass < "D:\guides.sql"
    en php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $commande = "\"C:/Program Files/MySQL/MySQL Server 5.0/bin/mysql.exe\" -hlocalhost -uroot -pmonpass < \"D:/guides.sql\"";
    		echo $commande.'<br \>';
    		$res = exec($commande) or die('erreur');
    Dans les log d'apache voici l'erreur :
    '/' n'est pas reconnu en tant que commande interne
    ou externe, un programme ex‚cutable ou un fichier de commandes.

    Merci d'avance

  2. #2
    Membre éclairé Avatar de llaffont
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2007
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2007
    Messages : 702
    Par défaut
    Salut,
    Dans un premier temps
    Utilise des quote plutot que des guillemets.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $commande = '"C:\Program Files\MySQL\MySQL Server 5.0\bin\mysql.exe" -hlocalhost -uroot -pmonpass < D:\guides.sql ';
    ++

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 206
    Par défaut
    J'ai rajouté après le exec, un et il me marque toujours
    erreur
    .

    Lorsque je regarde les log de apache, j'ai ce message :
    '/' n'est pas reconnu en tant que commande interne
    ou externe, un programme ex‚cutable ou un fichier de commandes.
    En modifiant comme proposé précédement, j'obtiens ce message dans les log d'apache :
    Syntaxe du nom de fichier, de r‚pertoire ou de volume incorrecte.

  4. #4
    Membre émérite Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Par défaut
    BOnjour !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $commande = '\"C:/Program Files/MySQL/MySQL Server 5.0/bin/mysql.exe\" -hlocalhost -uroot -pmonpass < \"D:/guides.sql\"';
    		echo $commande.'<br \>';
    		$res = exec($commande) or die('erreur');
    EDIT : J'ai dit des bétises la Ha pas tant que ca si c'est un pb de \ faire ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $commande = '\\"C:\\Program Files\\MySQL\\MySQL Server 5.0\\bin\\mysql.exe\\" -hlocalhost -uroot -pmonpass < \\"D:\\guides.sql\\"';
    		echo $commande.'<br \>';
    		$res = exec($commande) or die('erreur');

  5. #5
    Membre éclairé Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Par défaut
    Salut,

    je vais surement dire une bêtise, mais dans ta commande tu utilises des \ (antislash) et dans ton php des / (slash), ça ne viens pas de la le problème ?

    A+

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 206
    Par défaut
    J'ai déjà tester avec \\ et ca ne marche pas,

    Dans ton code, manière il y a une erreur...

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 206
    Par défaut
    Citation Envoyé par miron Voir le message
    Salut,

    je vais surement dire une bêtise, mais dans ta commande tu utilises des \ (antislash) et dans ton php des / (slash), ça ne viens pas de la le problème ?

    A+
    Déjà testé, et toujours pareil ...

  8. #8
    Membre émérite Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Par défaut
    Ha ok au tant pour moi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $commande = '\"C:/Program Files/MySQL/MySQL Server 5.0/bin/mysql.exe\" -hlocalhost -uroot -pmonpass < \"D:/guides.sql\"';
    		echo $commande.'<br \>';
    		$res = exec($commande) or die('erreur');
    Le premier \ doit y être forcemment non? Si oui il faut mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $commande = '\\"C:/Program Files/MySQL/MySQL Server 5.0/bin/mysql.exe\\" -hlocalhost -uroot -pmonpass < \\"D:/guides.sql\\"';
    		echo $commande.'<br \>';
    		$res = exec($commande) or die('erreur');

  9. #9
    Membre éclairé Avatar de llaffont
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2007
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2007
    Messages : 702
    Par défaut
    tente un truc de ce style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $commande = '"C:\Program Files\MySQL\MySQL Server 5.0\bin\mysql.exe" -hlocalhost -uroot -pmonpass < D:\guides.sql ';
     
     
    exec($commande , $output, $err);
     
    echo "CMD : $command<br>";
    echo 'output : '.nl2br(print_r($output,true)).'<br>';
    echo 'err : '.$err.'<br>';
    Attention ! les / et \ n'ont pas la même fonction.
    ici c'est un chemin Windows donc \

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 206
    Par défaut
    En faisant comme tu dis llaffont, j'obtiens :
    CMD :
    output : Array
    (
    )

    err : 1
    et dans les logs :
    'Program' n'est pas reconnu en tant que commande interne
    ou externe, un programme ex‚cutable ou un fichier de commandes.

  11. #11
    Membre éclairé Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Par défaut
    Remplace les espaces par des %20

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 206
    Par défaut
    non plus ...

  13. #13
    Membre émérite Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Par défaut
    je tente encore une fois :S en me basant sur le code d'avant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $commande = '"cd C:\Program Files\MySQL\MySQL Server 5.0\bin\mysql.exe" -hlocalhost -uroot -pmonpass < D:\guides.sql ';
     
     
    exec($commande , $output, $err);
     
    echo "CMD : $commande<br>";
    echo 'output : '.nl2br(print_r($output,true)).'<br>';
    echo 'err : '.$err.'<br>';
    EDIT : L'idée ici serait de le faire en deux temps à savoir se rediriger puis lancer le exe...

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 206
    Par défaut
    Je pense que l'idée de miron est pas mal car du coup j'ai remplacé par ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $commande = "\"C:\\Program%20Files\\MySQL\\MySQL%20Server%205.0\\bin\\mysql.exe\" -hlocalhost -uroot -pintertek < \"D:\\guides.sql\"";
    		echo $commande.'<br \>';
    		$res = exec($commande) or die('erreur');
    Car mnt l'erreur d'apache est :
    'mysql.exe' n'est pas reconnu en tant que commande interne
    ou externe, un programme ex‚cutable ou un fichier de commandes.

  15. #15
    Membre éclairé Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Par défaut
    Moi je suis de l'avis d'obito, qu'utiliser des "quotes" plutôt que des guillemets ca serait pas plus mal...
    Enfin moi je préférerais des quotes aux guillemets...

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 206
    Par défaut
    L'un ou l'autre ne fonctionne pas, je fais toujours mes tests avec les deux au cas où ...

  17. #17
    Membre éclairé Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Par défaut
    Je crois que ça dépasse mes connaissances, Désolé.
    Bon courage

  18. #18
    Membre émérite Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Par défaut
    Testé chez moi et lance bien le processus, mais qui ne lance aucune fenetre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $commande = "start C:\\Program Files\\Movie Maker\\moviemk.exe";
     
     
    exec($commande , $output, $err);
     
    echo "CMD : $commande<br>";
    echo 'output : '.nl2br(print_r($output,true)).'<br>';
    echo 'err : '.$err.'<br>';
    Sinon voila l'avertissement sur php.net :

    Note: Si vous démarrez un programme en utilisant cette fonction et que vous voulez le laisser tourner en arrière plan, vous devez vous assurer que la sortie du programme est redirigée vers un fichier, ou un autre flux de sortie, sinon PHP attendra jusqu'à la fin de l'exécution du programme.
    EDIT : Mais c'est le problème énoncé sur php.net qui se passe chez moi le script tourne sans fin...

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 206
    Par défaut
    Quand tu lance ce script php, que se passe t'il chez toi ?

    Moi j'obtiens :
    CMD : start C:\Program Files\Movie Maker\moviemk.exe
    output : Array
    (
    )

    err : 1
    et dans apache :
    '/start' n'est pas reconnu en tant que commande interne
    ou externe, un programme ex‚cutable ou un fichier de commandes.

  20. #20
    Membre émérite Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $commande = "start moviemk.exe";
     
     
    exec($commande , $output, $err);
     
    echo "CMD : $commande<br>";
    echo 'output : '.nl2br(print_r($output)).'<br>';
    echo 'err : '.$err.'<br>';
    Ne me retourne aucune erreur :

    CMD : start moviemk.exe
    Array ( ) output : 1
    err : 0
    De plus il lance bien le processus

Discussions similaires

  1. Réponses: 12
    Dernier message: 28/04/2009, 09h20
  2. [Système] Exécuter une ligne de commande
    Par fordprobe dans le forum Langage
    Réponses: 2
    Dernier message: 09/07/2007, 14h46
  3. [Système] Exécuter une commande java avec exec()
    Par kenny49 dans le forum Langage
    Réponses: 2
    Dernier message: 05/06/2007, 09h29
  4. Exécuter une commande système avec perl
    Par Olivier Regnier dans le forum Langage
    Réponses: 12
    Dernier message: 08/04/2007, 16h41
  5. exécuter une commande système à partir de sqlplus?
    Par c_moi_c_moi dans le forum Oracle
    Réponses: 24
    Dernier message: 08/11/2005, 15h11

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