Lancer un programme par un script en PHP
Résolu
Pro info
Messages postés
549
Statut
Membre
-
Pro info Messages postés 549 Statut Membre -
Pro info Messages postés 549 Statut Membre -
Bonjour,
je suis en train de réaliser un lanceur (pour un serveur de jeu) qui necessite plusieurs batch de démarré pour fonctionner. donc j'avais penser les lancés à la suites par l'intermediaire d'un script en php avec la fonction exec mais je ne parvient pas quand le batch est lancer à faire apparaitre un ok au lieu d'un erreur par defaut (j'ai déjà effectuer des recherches essayer plusieurs chose mais sans succès
je précise que je me suis bassé sur un script déjà existant et comme je n'y connait pas grand chose en php j'essaye de réaliser des petites choses comme ceci. (j'avais déjà créé un petit script en batch temporisé mais la j'aimerais avoir un script qui lance et qui vérifi si le batch en question et bien démarrer
je suis en train de réaliser un lanceur (pour un serveur de jeu) qui necessite plusieurs batch de démarré pour fonctionner. donc j'avais penser les lancés à la suites par l'intermediaire d'un script en php avec la fonction exec mais je ne parvient pas quand le batch est lancer à faire apparaitre un ok au lieu d'un erreur par defaut (j'ai déjà effectuer des recherches essayer plusieurs chose mais sans succès
<?php $com = "start D:\serv.bat"; exec($com, $serv); function demarre($s = 'd,marr,') { return "" . $s . ""; } function arrete($s = 'Erreur') { return " " . $s . ""; } echo ' Serveur 1 -> ' . ($serv_ok ? demarre() : arrete()) . PHP_EOL; echo ' Contrôleur 3 -> ' . ($cont_ok ? demarre() : arrete()) . PHP_EOL; echo ' Contrôleur 4 -> ' . ($contx_ok ? demarre() : arrete()) . PHP_EOL; ?>
je précise que je me suis bassé sur un script déjà existant et comme je n'y connait pas grand chose en php j'essaye de réaliser des petites choses comme ceci. (j'avais déjà créé un petit script en batch temporisé mais la j'aimerais avoir un script qui lance et qui vérifi si le batch en question et bien démarrer
A voir également:
- Php_eol c'est quoi
- Lancer un programme au démarrage windows 10 - Guide
- Script vidéo youtube - Guide
- Mettre en veille un programme - Guide
- Programme demarrage windows - Guide
- Fichier batch pour lancer un programme - Guide
4 réponses
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
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...
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
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 ?