Lancer un programme par un script en PHP
Résolu/Fermé
Pro info
Messages postés
413
Date d'inscription
samedi 13 mars 2010
Statut
Membre
Dernière intervention
22 novembre 2014
-
Modifié par Pro info le 19/07/2011 à 13:52
Pro info Messages postés 413 Date d'inscription samedi 13 mars 2010 Statut Membre Dernière intervention 22 novembre 2014 - 21 juil. 2011 à 10:18
Pro info Messages postés 413 Date d'inscription samedi 13 mars 2010 Statut Membre Dernière intervention 22 novembre 2014 - 21 juil. 2011 à 10:18
A voir également:
- Lancer un programme par un script en PHP
- Script vidéo youtube - Guide
- Lancer un programme au demarrage - Guide
- Programme demarrage windows 10 - Guide
- Mettre en veille un programme - Guide
- Easy php - Télécharger - Divers Web & Internet
4 réponses
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
19 juil. 2011 à 15:01
19 juil. 2011 à 15:01
Bonjour,
Dans tes « echo », tu utilises des variables qui ne sont pas définies : $serv_ok, $cont_ok et $contx_ok.
J'imagine qu'elles sont censées être les variables de sortie de exec($com, $serv).
Par ailleurs, d'après la documentation PHP https://www.php.net/manual/fr/function.exec.php , les choses ne sont pas aussi simples.
Il faut bien analyser le retour normal de tes batchs pour savoir comment vérifier s'ils ont bien tourné.
Pour tester, je te suggères d'abord ce code-là :
Exécute ça, et donne le résultat affiché.
Ça me permettra de te dire quoi mettre dans ton code.
Xavier
Dans tes « echo », tu utilises des variables qui ne sont pas définies : $serv_ok, $cont_ok et $contx_ok.
J'imagine qu'elles sont censées être les variables de sortie de exec($com, $serv).
Par ailleurs, d'après la documentation PHP https://www.php.net/manual/fr/function.exec.php , les choses ne sont pas aussi simples.
Il faut bien analyser le retour normal de tes batchs pour savoir comment vérifier s'ils ont bien tourné.
Pour tester, je te suggères d'abord ce code-là :
<?php $com = "start D:\serv.bat"; $tableau = array(); $retour = ""; $derniereLigne = exec($com, $tableau, $retour); var_dump($derniereLigne); echo "\r\n<br />\r\n"; var_dump($retour); echo "\r\n<br />\r\n"; var_dump($tableau); ?>
Exécute ça, et donne le résultat affiché.
Ça me permettra de te dire quoi mettre dans ton code.
Xavier
Pro info
Messages postés
413
Date d'inscription
samedi 13 mars 2010
Statut
Membre
Dernière intervention
22 novembre 2014
26
Modifié par Pro info le 20/07/2011 à 11:55
Modifié par Pro info le 20/07/2011 à 11:55
merci de m'aider mais disont que j'ai des batchs converti en exe qui m'execute d'autre batch (sa me permet de les démarrer en min et comme ils utilisent du javascript et du php si je ne créé pas un mini lanceur en exe dans le même dossier que l bat que je veux lancer ils refusent de démarrer à cause d'un mauvais répertoire de lancement donc ducoup j'avais trouver une alternative
(par exemple dans mon bat avant conversion en exe pour serv j'ai)
et donc pour ton script quand je l'execute pour lancer cet exe sa me donne
_>rep.serv startlanceur.exe->start.exe rep.racine .bat [ _>rep.controleur1 Onyxlanceur.exe->Onyx.bat _>rep.controleur2 Xasecolanceurdirt->Xaseco.bat
(par exemple dans mon bat avant conversion en exe pour serv j'ai)
cd.. cd serveursTHPdirtrpg\Onyx3\ServDirt start/MIN start.exe exit
et donc pour ton script quand je l'execute pour lancer cet exe sa me donne
string(0) "" <br /> int(0) <br /> array(0) { } 0 Appuyez sur une touche pour continuer...
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
20 juil. 2011 à 12:06
20 juil. 2011 à 12:06
OK, alors je te suggères le code suivant :
Xavier
<?php $comServ = "start D:\serv.bat"; $comCont = "start ..."; $comContx = "start ..."; $dummy = array(); $serv_ok = ""; $cont_ok = ""; $contx_ok = ""; exec($comServ, $dummy, $serv_ok); exec($comCont, $dummy, $cont_ok); exec($comContx, $dummy, $contx_ok); function demarre($s = 'd,marr,') { return "" . $s . ""; } function arrete($s = 'Erreur') { return " " . $s . ""; } echo ' Serveur 1 -> ' . (($serv_ok == 0) ? demarre() : arrete()) . PHP_EOL; echo ' Contrôleur 3 -> ' . (($cont_ok == 0) ? demarre() : arrete()) . PHP_EOL; echo ' Contrôleur 4 -> ' . (($contx_ok == 0) ? demarre() : arrete()) . PHP_EOL; ?>
Xavier
Pro info
Messages postés
413
Date d'inscription
samedi 13 mars 2010
Statut
Membre
Dernière intervention
22 novembre 2014
26
Modifié par Pro info le 20/07/2011 à 12:17
Modifié par Pro info le 20/07/2011 à 12:17
merci Xavier sa fonctionne très bien mais n'y à t'il pas moyen de démarrer directement l'onyx.bat ou encore le xaseco.bat car en regardant bien les "lanceurs" eux ne vont jamais planter donc n'y à t'il pas une autre alternative ?
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
20 juil. 2011 à 13:20
20 juil. 2011 à 13:20
Mmmh...
Là comme ça, je ne sais pas.
Par contre, une piste : en remplaçant « exit » par « exit n » avec n égal au code retour que tu veux renvoyer.
La question qui reste, c'est comment déterminer ce « n » en batch. Je ne maîtrise pas trop... mais je pense que c'est une piste à investiguer.
Là comme ça, je ne sais pas.
Par contre, une piste : en remplaçant « exit » par « exit n » avec n égal au code retour que tu veux renvoyer.
La question qui reste, c'est comment déterminer ce « n » en batch. Je ne maîtrise pas trop... mais je pense que c'est une piste à investiguer.
Pro info
Messages postés
413
Date d'inscription
samedi 13 mars 2010
Statut
Membre
Dernière intervention
22 novembre 2014
26
21 juil. 2011 à 10:18
21 juil. 2011 à 10:18
sinon et t'il possible de lancer les lanceurs à un autre moment et récuperer seulement l'info avec exe comma sa imaginont execution des 3 lanceurs lancement des servs cont1 contx et pour chaques récupération d'information comme quoi ils sont en fonctionnement (ou une autre manière)
merci
merci